我有一个自定义BaseAdapter
,其中显示的ListView
包含TextView
和CheckBox
。 TextView
已实施OnClickListener
,可在点击文字时执行特定操作。在适配器中,我注册了OnCheckedChangeListener
,用于跟踪检查的项目(因为ListView
回收)。
我想在检查ActionMode
时启动CheckBox
,并在取消选中时停止它。
如何通知托管适配器的主要活动已进行检查?
答案 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());
}