将LinearLayout放入ListView(Android)中

时间:2011-03-21 16:58:19

标签: android-layout

我正在尝试以编程方式将LinearLayout放在ListView中并且遇到一些麻烦。我想这样做,以便我可以在每个ListView单元格中插入水平列。这是相关的代码片段:

    LinearLayout listArray[] = new LinearLayout[routeTable.GetTableHeight()];
    for (int i = 0; i < routeTable.GetTableHeight(); i++) {
        listArray[i] = new LinearLayout(this);
        TextView view = new TextView(this);
        view.setText(strList[i]);
        listArray[i].addView(view);
    }

    // Create list
    ListView list = new ListView(this);
    list.setAdapter(new ArrayAdapter<LinearLayout>(this,
            android.R.layout.simple_list_item_1, listArray));
    layout.addView(list, new LinearLayout.LayoutParams(
            ViewGroup.LayoutParams.FILL_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT));

这会编译,但显示的结果列表不会显示strList []中的任何字符串。相反,显示的列表元素显示为“android.widget.LinearLayout@47b63c0”。有没有人知道如何解决这个问题,以便显示listArray []内部的相应TextViews?

1 个答案:

答案 0 :(得分:1)

ArrayAdapter只对列表中的每个对象调用.toString()方法,并在每个列表项中显示结果字符串。在您的情况下,在LinearLayout上调用.toString(),这就是您所看到的列表元素。目前还不清楚routeTable的元素是什么。

您应该将BaseAdapter子类化,以便您可以自己为每个列表项构建必要的View。