class CheckAdapter extends BaseAdapter {
class NormalListHolder {
ImageView check;
}
LayoutInflater layoutInflater;
NormalListHolder normalListHolder;
public CheckAdapter(Context context) {
layoutInflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.list_item,
null);
normalListHolder = new NormalListHolder();
convertView.setTag(normalListHolder);
} else {
normalListHolder = (NormalListHolder) convertView.getTag();
}
normalListHolder.favoriteTag.setId(position);
normalListHolder.favoriteTag
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (favoriteStatus.get(v.getId())) { // favorite
favoriteStatus.set(v.getId(), false);
normalListHolder.favoriteTag.setImageSrc();
} else {
favoriteStatus.set(v.getId(), true);
normalListHolder.favoriteTag.setImageSrc();
}
notifyDataSetChanged();
}
});
return convertView;
}
}
Я редактирую из своего кода, но я не уверен, что он работает (я редактирую его не очень осторожно), я объясню, что я делаю ниже:
1 создать ArrayList, который сохранил статус элемента (или когда вы прокручиваете просмотр списка, флажок будет сбит с толку)
ArrayList<Boolean> favoriteStatus = new ArrayList<Boolean>();
2 создайте новый Adpater и сделайте в нем держатель , держатель связывает представления в списке элементов.
3 setTag к списку держателем
4 при щелчке по нему, ищите статус в statusArray и устанавливайте правильный статус для представления, затем notifyDatasetChange (если это флажок, возможно, не нужен, потому что я здесь использую изображение), вы также можете сделать обновить базу данных или другие действия здесь
извините за мой английский пул, надеюсь, что он может помочь вам