3

ICSベースのアプリケーションの場合、私はListFragmentを作成しました。これは、BaseAdapter実装を使用します。コンテキストアクションバーを表示するためにMultiChoiceModeListener()を有効にしました。ただし、ここでの問題は、チェックボックスをオンにするか、ラベルを長押しすると(どちらもBaseAdapterのビューセットにあります)、MultiChoiceModeListener実装がまったく呼び出されないことです。多くのオプションを試した後、私は完全に立ち往生しているので、どんな種類の助けも大歓迎です!!!

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
}

}
4

4 に答える 4

0

リストに onLongClickListener が含まれていないかどうかを確認する必要があります。私はあなたと同じ問題を抱えていましたが、長いクリックが ViewHolder によって呼び出されたため、MultiChoiceListener が呼び出されなかったことに気付きました。

于 2015-03-02T16:11:04.683 に答える
-3

MultiChoiceModeListener の実装にバグがある可能性があります。それは私にとってはうまくいきます。

于 2013-01-31T14:21:11.267 に答える