【发布时间】: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); 内部调用;
标签: android listview android-listview baseadapter