2015-11-27 2 views
0

Я создал элемент списка со значком в конце. Использование RecyclerView.AdapterAndroid RecyclerView.Adapter change icon onClick

На значке onClick я хочу изменить значок. (Я могу это сделать). Но когда вы прокручиваете список вверх или вниз, будет отображаться значок другого случайного элемента списка.

public void onBindViewHolder(StatusViewHolder holder, int position) { 
       ... 

final InviteFriend data = mInviteFriend.get(position); 

    if(data.isSelected()) { 

       holder.imageView.setImageResource(R.drawable.ic_person_black_24dp); } 
       holder.imageView.setTag(data); 

       holder.imageView.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View view) { 
         ImageView imageView = (ImageView) view; 
         InviteFriend inviteFriend = (InviteFriend) imageView.getTag(); 
         inviteFriend.setSelected(true); 
         imageView.setImageResource(R.drawable.ic_person_black_24dp); 
         notifyCounterChanged(true); 
        } 
       }); 

    } 

ответ

2

В утилизаторе посмотреть вид будет переработан, чтобы сохранить использование памяти
поэтому вам нужно добавить еще в вашем состоянии

if(data.isSelected()) { 
    // your original code 
} else { 
    holder.imageView.setImageResource(R.drawable.your_drawable); 
    //Put another code if you want 
} 
+1

Большое спасибо. Я закончил забыл, что RecyclerView не сохранит состояние – Joolah

+0

. Добро пожаловать, я тоже иногда об этом забыл;) –

+0

Большое спасибо. Проблема, с которой я столкнулся, состоит в том, что каждый элемент списка изменится на значок, который был установлен для измененных строк. Я столкнулся с этой проблемой, потому что у меня был оператор 'if'. Другой зафиксировал это. – androidtitan