2012-04-01 15 views
1

ListViewで1つまたは複数の項目を選択すると、余分なメニュー項目(コンテキストアクションバー)を表示しようとしています。基本的には、選択した項目にDBのフィールドがtrueに設定されているかどうかを確認しています。もしそうなら、余分なメニュー項目を追加します。AndroidはDBフィールドに基づいてメニュー項目を動的に追加します

onItemCheckedStateChanged()で選択したアイテムのDBにクエリを実行して、メニューを無効にしようとしました。これはonPrepareActionMode()と呼ばれ、必要に応じて余分なオプションを表示することができます。

特別なDB列がfalseに設定されている項目がonItemCheckedStateChanged()で選択され、余分なメニュー項目がonPrepareActionMode()になると、DB列ですでに選択されているオプションが記憶されないため、これは機能しません除去される。

どのようにこれに近づけることができますか?基本的には、選択されたListViewアイテムのすべてを覚えておく必要があります。これは、DB内の余分なフィールドがtrueに設定されているので、余分なメニューアイテムを表示できます。また、選択したListViewアイテムにDBフィールド。

答えて

1

両方の種類のアイテムを一度に選択した場合(たとえば、(db)と1つ(false)のいずれかを選択した場合の対処方法を決定する必要があります。許可する場合は、アクティビティのどこかでボタンの状態を追跡します。あなたの活動にプライベート整数メンバを追加し、データベース内のtrueの項目が選択されたときはいつでもこの数値を増やして、その項目が選択解除されたときはいつでも減らします。 onPrepareActionModeで0の場合は、ボタンを表示しないでください。

+0

フィールドのIDを「true」に設定して同様のことを考えていましたが、これははるかに優れています。ありがとう、ウラジミール:)。この質問が役に立ちそうな人には、CABが破棄されたときにカウンタを0に設定することを忘れないでください。そうでない場合は、DBフィールドが「true」に設定された項目を選択し、 1を選択します。 – Daniel

関連する問題