-1

我只是想创建一个包含“a”、“b”、“c”的 ListView。当我单击每个项目时,我希望每个项目都指向一个独特的活动,每个活动都包含不同的 ListView。

列表显示

  • 一个
    • 1
    • 2
    • 3
    • 3
    • 4
    • 5
  • C
    • 6
    • 7
    • 8

请为此提供最佳代码。在这里很难找到能做到这一点的东西。大多数条目对我来说太具体了,无法清楚地了解如何以最一致、最有效的方式完成所有这些工作。

提前致谢!

4

1 回答 1

0

如果您想要一个 Activity 中具有 A、B、C 的 ListView 以及另一个 Activity 中的子列表,您实际上只需要一个通用 ListActivity 来处理这个问题。您只需向 ListActivity 传递不同的数据集。

onCreate()下面:

  • 如果 Activity 没有传递特殊数据,它将显示 A、B、C 并使用该onListItemClick()方法启动子 Activity。
  • 如果 Activity 确实在 Intent 中存储了额外的数据,那么它会在 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 回答