2012-07-21 3 views
14

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文を実装します。

答えて

12

さてさて、私はちょうど、今日やった、そのサイトへの感謝:http://www.miximum.fr/tutos/849-porting-the-contextual-anction-mode-for-pre-honeycomb-android-apps

は基本的に、あなただけのリストビューで確認されているどのような項目をチェックすることをonItemClickListenerを設定するには、ListView.CHOICE_MODE_MULTIPLEにあなたのListView ChoiceModeを設定する必要があり、コンテクストActionBarを管理するActionMode.Callbackを実装するプライベートクラスを作成します。

私はあなたが詳細をすべて見るためにそのblogpostに行きましょう、そしてコードの一部!

+0

ありがとうございました。私はこのページも昨日見つけ、解決策を実装しました。私はonItemClickListenerをonItemLongClickListenerに変更します。これはうまく動作しません。あるItemを短くクリックした後でActionModeを開始し、私のアクティビティを閉じ、アイテムをもう一度長く押すことができます。解決策は完璧ではありませんが、開始には適しています。 – Happo

+0

あなたの問題をよく理解していれば、ListViewのアイテムをクリックするだけであなたのアクティビティがまだ開いているということですか?次に、あなたの 'onItemLongClickListener'で' listView'' onItemClickListener'をnullに設定することができます。これにより、何もアクティビティが開かれません。'ModeCallback'クラスの' onDestroyActionMode'に元の 'onItemClickListener'(変数に保存することができます)に戻してください。 – MagicMicky

+0

onItemClickメソッドが呼び出される前に、onItemLongClickメソッドを渡したイベント。このメソッドはbooleanを返します。したがって、trueを返した場合、イベントは処理され、onItemClickメソッドには到達しませんでした。私がfalseを返すと、長いクリックを処理せず、他のタイプのクリックを行いました。私は他のいくつかの質問でこれを見つけましたが、あなたの解決策も可能です。私は今日少し後にそれをテストします。 – Happo

5

また、Google I/O 2012 Appを見ることもできます。それはopensourceであり、ActionBarSherlockを使用します。彼らはActionModeの互換バージョンを開発しました。これは、ABSとプリハニカムデバイスでうまく動作する関連クラスです。特に

、見てみましょう:

  • SessionsFragmentクラス:それはActionMode
  • util.actionmodecompatパッケージの互換バージョンの使用方法を示しています。それは基本的に互換性のActionModeに クラス

が含まれていますABSと同様にActionModeが使用可能になったときにそれらをネイティブに実装し、古いデバイスのカスタム実装にフォールバックします。

希望すると助かります!

+0

あなたの情報は本当に役に立ちます、ありがとう。 appcompat v7パッケージからActionModeとActionBarActivityを使用しているときに、このファイルも役に立ちます。 http://iosched.googlecode.com/git/android/src/main/java/com/google/android/apps/iosched/ui/MultiSelectionUtil.java –

関連する問題