Android:通知自定义ListView的CheckBox的主要活动

时间:2014-07-11 18:45:28

标签: android listview baseadapter android-actionmode

我有一个自定义BaseAdapter,其中显示的ListView包含TextViewCheckBoxTextView已实施OnClickListener,可在点击文字时执行特定操作。在适配器中,我注册了OnCheckedChangeListener,用于跟踪检查的项目(因为ListView回收)。

我想在检查ActionMode时启动CheckBox,并在取消选中时停止它。

如何通知托管适配器的主要活动已进行检查?

2 个答案:

答案 0 :(得分:1)

创建一个监听器回调接口,如:

public interface ListenerCheckBox
{
    public void onRowChecked(int rowNun);
}

然后,让你的主要活动实现这个监听器:

public class ActivityMain implements ListenerCheckBox

然后,当您实例化自定义BaseAdapter时,传入侦听器:

//kv 3rd parameter would be listener
CustomBaseAdapter customBaseAdapter = new CustomBaseAdapter(this, items, this);

然后,在CustomBaseAdapter的构造函数中,将成员字段设置为侦听器:

public CustomBaseAdapter(Context context, ArrayList<Item> items, ListenerCheckBox listenerCheckBox)
{
    mListenerCheckBox = listenerCheckBox;
    ...
}

然后,每次检查项目时,请致电:

mListenerCheckBox.onRowChecked(rowNum);

答案 1 :(得分:1)

Here是一个Android Studio项目,展示了如何执行您所要求的操作的示例。请务必查看the check listener及其onClick()

@Override
public void onClick(View v) {
    if (mMode != null) {
        mMode = mListView.startActionMode(new ExampleMultiChoiceModeListener(mActivity));
    }

    mListView.setItemChecked(mPosition, ((Checkable) v).isChecked());
}