删除后仍会检查多选模式列表视图行

时间:2015-10-30 11:31:38

标签: android listview android-listview baseadapter

我有一个使用DragSortListView库创建的listView。我可以检查和取消使用自定义基本适配器创建的行。我在片段代码中使用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
        }
    });

是列表行中显示的项目的arraylist。

holder.container 是实现可检查的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;
}

}

我在这里错过了什么吗?任何帮助表示赞赏。感谢。

1 个答案:

答案 0 :(得分:0)

我在下面找到了这个解决方案。

setChecked()不检查项目,我们必须在ListView上使用setItemChecked()。

要检查CHOICE_MODE_MULTIPLE中的项目,请不要致电 CheckedTextView上的setChecked()。调用setItemChecked()就可以了 的ListView。

https://groups.google.com/forum/#!searchin/android-developers/choice_mode_multiple$20listview$20/android-developers/qPgt23C2-0o/Xdjs9ARPLGcJ

和这个

Call Activity method from adapter