-1

「a」、「b」、「c」を含むListViewを作成したいだけです。各アイテムをクリックすると、それぞれが異なるListViewを含む固有のアクティビティを指示するようになります。

リストビュー

  • A
    • 1
    • 2
    • 3
  • B
    • 3
    • 4
    • 5
  • C
    • 6
    • 7
    • 8

これに最適なコードを提供してください。これを行う何かをここで見つけるのはとても難しいです。ほとんどのエントリは具体的すぎて、これらすべてを最も一貫性のある効率的な方法で行う方法を明確に理解することはできません。

前もって感謝します!

4

1 に答える 1

0

あるアクティビティにA、B、Cがあり、別のアクティビティにサブリストがあるListViewが必要な場合、これを処理するために必要なのは、実際には1つの汎用ListActivityだけです。ListActivityのさまざまなデータセットを渡すだけで済みます。

以下onCreate()

  • アクティビティに特別なデータが渡されない場合は、A、B、Cが表示され、onListItemClick()メソッドを使用してサブアクティビティが開始されます。
  • アクティビティのインテントに追加のデータが保存されている場合、この追加のデータはListViewに表示され、への呼び出しはすべて無視されonListItemClick()ます。
public class Example extends ListActivity {
    boolean isSubList = false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        String[] array;
        Intent received = getIntent();
        // Setup as main ListView
        if(received == null || !received.hasExtra("array")) {
            array = new String[] {"A", "B", "C"};
        }
        // Setup as sub ListView
        else {
            isSubList = true;
            array = received.getStringArrayExtra("array");
        }

        setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array));
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        if(!isSubList) {
            Intent starting = new Intent(Example.this, Example.class);
            switch(position) {
            case 0:
                starting.putExtra("array", new String[] {"1", "2", "3"});
                break;
            case 1:
                starting.putExtra("array", new String[] {"4", "5", "6"});
                break;
            case 2:
                starting.putExtra("array", new String[] {"7", "8", "9"});
                break;
            }
            startActivity(starting);
        }
    }
}
于 2012-12-01T23:52:26.733 に答える