多选模式列表视图行在删除后保持选中状态
Posted
技术标签:
【中文标题】多选模式列表视图行在删除后保持选中状态【英文标题】:Multi choice mode listview row remains checked after deletion 【发布时间】:2016-01-30 19:40:52 【问题描述】:我有一个使用DragSortListView 库创建的列表视图。我能够检查和取消使用自定义基本适配器创建的行。我在我的片段代码中使用 getCheckedItemPositions() 获得检查的位置。
问题是当我删除一个被选中的特定行并添加一个新行时,会自动检查该新行。我希望该行在被删除时取消选中。
这是我在 getView() 中所做的,但它不起作用。
holder.clearItem.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
items.remove(position);
updateNoteAdapter(items);
holder.container.setChecked(false); //row needs to be unchecked
);
items 是列表行中显示的项目的arraylist。
holder.container 是实现 Checkable 的 OneLineCheckableListItem 类。
public class OneLineCheckableListItem extends RelativeLayout implements Checkable
public OneLineCheckableListItem(Context context, AttributeSet attrs)
super(context, attrs);
private boolean checked;
@Override
public void setChecked(boolean checked)
this.checked = checked;
ImageView iv = (ImageView) findViewById(R.id.SelectImageView);
iv.setImageResource(checked ? R.drawable.ic_toggle_check_box : R.drawable.ic_toggle_check_box_outline_blank);
@Override
public boolean isChecked()
return checked;
@Override
public void toggle()
this.checked = !this.checked;
这里有什么我错过的吗?任何帮助表示赞赏。谢谢。
【问题讨论】:
添加 notifyDataSetChanged();在 holder.container.setChecked(false); notifyDataSetChanged();在 updateNoteAdapter(items); 内部调用; 【参考方案1】:我在下面找到了这个解决方案。
setChecked() 不检查项目,我们必须在 ListView 上使用 setItemChecked()。
要检查 CHOICE_MODE_MULTIPLE 中的项目,您无需调用 CheckedTextView 上的 setChecked()。调用 setItemChecked() 列表视图。
https://groups.google.com/forum/#!searchin/android-developers/choice_mode_multiple$20listview$20/android-developers/qPgt23C2-0o/Xdjs9ARPLGcJ
还有这个
Call Activity method from adapter
【讨论】:
以上是关于多选模式列表视图行在删除后保持选中状态的主要内容,如果未能解决你的问题,请参考以下文章