ActionBarSherlockを使用してAndroid AppにActionModeを実装します。 ABSを使用すると、API 11の前にActionModeを作成できますが、簡単な方法: listView.setMultiChoiceModeListener(new MultiChoiceModeListener() ...
はAPI 11の前のアプリではありません。 API 11の前にアクションモードのコンテキストメニューを作成するのに良い方法はありますか? List Itemを長時間クリックしてActionModeを開始し、複数のアイテムをクリックするとします。簡単なクリックでは、リスト項目の詳細サイトを表示します。 私はregisterForContext()
メソッドを使用しますが、これはシンプルで長いクリックを行います。APIより前のMultiChoiceMode
誰かが私のために良いヒントを持っています。
EDIT
私の質問のためのソリューションは、以下ました:長い項目に私は、アクティブ動作モードをクリックして、変数にこれを保存します。その上
if(actionMode == null)
{
// open new activity or update second fragment
showDetails(itemPosition);
}
else
{
// update ui or close CAB if no item selected
showCAB(itemPosition);
}
メソッドshowCAB(位置)の更新のSelectedItem数、ハイライトアイテムの背景と:項目をクリックする方法で、私はとのif-else文を実装します。
ありがとうございました。私はこのページも昨日見つけ、解決策を実装しました。私はonItemClickListenerをonItemLongClickListenerに変更します。これはうまく動作しません。あるItemを短くクリックした後でActionModeを開始し、私のアクティビティを閉じ、アイテムをもう一度長く押すことができます。解決策は完璧ではありませんが、開始には適しています。 – Happo
あなたの問題をよく理解していれば、ListViewのアイテムをクリックするだけであなたのアクティビティがまだ開いているということですか?次に、あなたの 'onItemLongClickListener'で' listView'' onItemClickListener'をnullに設定することができます。これにより、何もアクティビティが開かれません。'ModeCallback'クラスの' onDestroyActionMode'に元の 'onItemClickListener'(変数に保存することができます)に戻してください。 – MagicMicky
onItemClickメソッドが呼び出される前に、onItemLongClickメソッドを渡したイベント。このメソッドはbooleanを返します。したがって、trueを返した場合、イベントは処理され、onItemClickメソッドには到達しませんでした。私がfalseを返すと、長いクリックを処理せず、他のタイプのクリックを行いました。私は他のいくつかの質問でこれを見つけましたが、あなたの解決策も可能です。私は今日少し後にそれをテストします。 – Happo