2

ListFragment があり (互換性の理由から android.support.v4.app.ListFragment を使用しています)、コンテキスト アクション モードを使用したいと考えています。

したがって、私はコーディングしました:

public class CustomListFragment extends ListFragment {
...
    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        setListAdapter(new CustomListAdapter(getActivity().getApplicationContext(), TYPE));

        if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB){
             registerForContextMenu(getListView());
        } else {
            getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
            getListView().setMultiChoiceModeListener(new CustomMultiSpamItemChoiceModeListener());          
        }
   }
...
}


class CustomMultiSpamItemChoiceModeListener implements MultiChoiceModeListener{
    @Override
    public boolean onActionItemClicked(ActionMode arg0, MenuItem arg1) {
        return false;
    }
    @Override
    public boolean onCreateActionMode(ActionMode arg0, Menu arg1) {
        return false;
    }
    @Override
    public void onDestroyActionMode(ActionMode arg0) {
    }
    @Override
    public boolean onPrepareActionMode(ActionMode arg0, Menu arg1) {
        return false;
    }
    @Override
    public void onItemCheckedStateChanged(ActionMode arg0, int arg1,
            long arg2, boolean arg3) {
    }
}


public class CustomListAdapter extends BaseAdapter{
...
    @Override
    public View getView(int pos, View view, ViewGroup vg) {
    ...
    }
}

問題は、 をsetChoiceModeアダプタListView.CHOICE_MODE_MULTIPLE_MODALに設定するとすぐに、 の項目をクリックgetView(int pos, View view, ViewGroup vg) するたびにメソッドが呼び出されることです。コンテキスト アクション モードはアクティブ化されていません。ListView

これは、長続きするアイテムが押されたアニメーションで明らかになります。通常、押されたアイテムの青いインジケータは数ミリ秒続きますが、ListItems を作成するために必要なすべての情報を収集するのに時間がかかるため、私の場合は約 1 秒です。

この動作は想定どおりですか? フラグが全体を再びListView.CHOICE_MODE_MULTIPLE_MODAL「再開」する必要はないと思います。ListItems

4

0 に答える 0