0

我有一个自定义BaseAdapter显示ListView包含 aTextView和 a CheckBoxTextView实现了在OnClickListener单击文本时执行特定操作。在适配器中,我有一个OnCheckedChangeListener注册,它跟踪检查了哪个项目(因为ListView回收)。

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

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

4

2 回答 2

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);
于 2014-07-12T00:35:52.180 回答
1

是一个 Android Studio 项目,它显示了如何执行您所要求的操作的示例。特别是,检查检查侦听器及其onClick()

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

    mListView.setItemChecked(mPosition, ((Checkable) v).isChecked());
}
于 2014-07-12T00:49:43.790 回答