6

シンプルなにListFragment関連付けられていArrayAdapterます。ListView はチェック可能な項目のリストを保持し、その XML レイアウトは次のとおりです。

<ListView android:id="@id/android:list"
              android:layout_width="match_parent"
              android:layout_height="0dip"
              android:layout_weight="1"
              android:layout_marginLeft="2mm"
              android:layout_marginRight="2mm"
              android:drawSelectorOnTop="false"
              android:longClickable="true"
              android:choiceMode="multipleChoiceModal"/>

ご覧のとおり、XML レイアウトに属性long-clickableと属性を設定しました。choicemode

ListFragmentonViewCreatedコールバックに適切なリスナーを設定します。

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    ListView list_view = getListView();
    list_view.setMultiChoiceModeListener(this);
    list_view.setOnItemLongClickListener(this);
}

myはこれらのリスナーのコールバックも実装しているthisため、listener パラメーターとして渡します。ListFragment

これは私が問題を抱えているコールバックです:

@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id
{
    activity.startActionMode(this);
    return true;
}

まず、それonItemLongClickは決して呼び出されません。ただし、リスト項目を長押しすると、コンテキスト アクション バー (CAB) が起動し、完全に機能します。

実際、CAB はこのコールバックがなくても正しく開始されます。私のコールバックはactivity.startActionMode(this)CAB を表示する を使用しますが、リスト内のアイテムのチェックオフを容易にしません (私はこれを別の場所でテストしました)。

長いクリックをプログラムで適切に処理して CAB を開始し、リスト項目のチェックを容易にするにはどうすればよいですか?

Android 開発者ガイドのトピックに記載されているメソッドを使用しています (onLongClickListener を使用しましたが、これも役に立ちませんでした) が、機能していないようです。

4

1 に答える 1