Как получить доступ к просмотру внутри деятельности с адаптера в Android? - PullRequest
0 голосов
/ 05 сентября 2018

Кто-нибудь знает, как получить доступ к адаптеру imageView внутри активности, чтобы скрыть вид. Пожалуйста, укажите любой пример.

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

Надеюсь, это сработает для вас.

Используя SharedPreferences, мы можем легко скрыть представление от действия или фрагмента.

Сохранить флаг в SharedPreferences То есть верно от активности.

Если вы используете Recyclerview, тогда в onBindViewHolder проверяется метод условия

if(flag==true){
    holder.yourView.setVisibility(View.GONE);
}else{
    holder.yourView.setVisibility(View.VISIBLE);
}
0 голосов
/ 06 сентября 2018

Вы не должны напрямую взаимодействовать с ImageView, вместо этого вы можете использовать notifyItemChanged() для обновления состояния ImageView в адаптере. Но вам нужно немного изменить код своего адаптера, добавив флаг в данные модели или используя SparseBooleanArray в качестве механизма для сохранения состояния ImageView.

Вот пример:

public class Adapter ... {
  private SparseBooleanArray mSelectedItems;
  private List<YourModel> mItems;

  public Adapter(List<YourModel> items) {

    mItems = items;
    mSelectedItems = new SparseBooleanArray();
  }

  ...
  public void onBindViewHolder(....) {
    int itemPosition = viewHolder.getAdapterPosition();
    YourModel item = items.get(itemPosition);

    boolean visible = mSelectedItems.get(itemPosition);   
    viewHolder.imageView.setVisibility(visible? View.VISIBLE: View.GONE);

    ...
  }

  public void setItemVisibilityByPosition(int position, boolean visible) {
    mSelectedItems.put(position, visible);
    notifyItemChanged(position);
  }

}

Вы можете изменить видимость изображения с помощью:

 // Assume the mAdapter is your Adapter
 mAdapter.setItemVisibilityByPosition(5, true);
0 голосов
/ 05 сентября 2018

Перейдите в onBindViewHolder адаптера и получите идентификатор вашего изображения и код, подобный этому holder.mImgVw.setVisibility (View.GONE);

...