Для приложения на основе ICS я создал ListFragment, который, в свою очередь, использует реализацию BaseAdapter. Я включил MultiChoiceModeListener(), чтобы отобразить панель контекстных действий. Но проблема здесь в том, что всякий раз, когда я проверяю CheckBox или долго нажимаю Label (оба находятся в представлении, установленном в BaseAdapter), реализация MultiChoiceModeListener вообще не вызывается. Любая помощь очень ценится, поскольку я полностью застрял после многих вариантов!Android: MultiChoiceModeListener не вызывается внутри ListFragment
public class ActivitiesFragment extends ListFragment {
public void onActivityCreated(Bundle savedInstanceState) {
Log.d(TAG, "Entering onActivityCreated()");
super.onActivityCreated(savedInstanceState);
this.setAdapter();
this.setHasOptionsMenu(true);
}
private void setAdapter() {
HashMap<String, String> activities = DBAdapter
.getInstance(this.context).getActivities();
setListAdapter(new ActivitiesList(Util.sortByComparator(activities)));
ListView listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new MultiSelectionListener());
}
private class ActivitiesList extends BaseAdapter {
// Other functions declared
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ActivityView view = null;
String activityName = this.activityList.get(position);
String colour = this.activities.get(activityName);
if (convertView == null) {
// ActivityView is a LinearLayout with CheckBox, Label and a Button
view = new ActivityView(context, activityName, colour);
} else {
view = (ActivityView) convertView;
view.setActivityName(activityName);
}
return view;
}
}
private class MultiSelectionListener implements MultiChoiceModeListener {
// implementation
}
}
Я не пробовал ActionMode.Callback еще. Но разве это не используется для отдельных просмотров? Я ищу пакетное контекстное действие, где мне нужно выбрать несколько видов в этом списке. И я реализовал то же самое, о чем упоминается в ссылке разработчика Android. – Koottan
'ActionMode' используется для выбора партии. – adneal
Вы ошибаетесь. MultiChoiceModeListener предназначен для такого использования. Посмотрите на List16 в демонстрациях API. – pcu