0

クリックしたボタンに応じてデータベースのコンテンツをリストビューに表示することを目的としたアプリケーションを開発しています。このように動作します: 9 つの異なるボタン (たとえば、「レストラン」「ファーストフード」「コーヒーショップ」など) を持つメインアクティビティがあり、ユーザーがこれらのボタンのいずれかをクリックするたびに、1 つの同じアクティビティ (と呼ばれる) が開きます。 ResultListViewActivity) ですが、内容は毎回異なります (レストランのリスト、ファストフードなど)。
したがって、コンテンツを表示するアクティビティは 1 つだけですが、リストビュー自体のコンテンツはクリックされたボタンによって異なります。

これでうまくいきました。ResultListViewActivity にフィルター メニューを追加して、ユーザーにさらにオプションを追加したいと考えています。問題は、このメニューがクリックされたボタンに応じて異なる必要があることです。たとえば、ユーザーがメイン アクティビティで「レストラン」をクリックすると、「アジア料理」や「フランス料理」などの項目を含むメニューを含む ResultListViewActivity を開く必要がありますが、コーヒー ショップをクリックすると、 「喫茶店」「カフェ」など、アイテムごとに具体的な方法で。

このコードを整理するための私の考えは次のとおりです。
ここに画像の説明を入力

アイデアは、ボタンがクリックされるたびに値が設定される myVariable という変数を持ち (例: button1 をクリックすると、myVariable=1)、この変数を ResultListViewActivity に送信し、「if」文で 9 つの状況を記述することです。
これらの状況のそれぞれで、メニューにアイテムを追加し、これらのアイテムが何をすべきかを定義します。

私の質問は次のとおりです。これはうまくいくはずですが、9つの状況を書くことを避けるために、もっと直接的または簡単に行うべきことがあるかもしれないことも知っています. 上記で説明した方法でコードを書いても構わないと思っていますが、Android の初心者レベルでは、より効率的な方法を知ることができないのではないかと心配しています。

ps : アイテムにアクセスするには、おそらくアクション バーから「フィルター」というサブメニューを使用するか、それが不可能な場合はスピナーを使用します (画面の下部にアクション バーが既に 1 つありますが、別のアクション バーをオンにできるかどうかはわかりません)。上)。

4

1 に答える 1

1

9 つの異なるメニューを作成し、myVariable に適した 1 つをインフレートできます。myVariable が整数であるとします

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    switch (myVariable)
    {
        case 1: 
            getMenuInflater().inflate(R.menu.activity_restaurant, menu);
            break;

        case 2:
            ........

        .....
    }

    return super.onCreateOptionsMenu(menu);
}
于 2013-03-19T07:16:19.443 に答える