シンプルなに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
ListFragment
のonViewCreated
コールバックに適切なリスナーを設定します。
@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 を使用しましたが、これも役に立ちませんでした) が、機能していないようです。