我正在尝试以编程方式将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?
答案 0 :(得分:1)
ArrayAdapter只对列表中的每个对象调用.toString()方法,并在每个列表项中显示结果字符串。在您的情况下,在LinearLayout上调用.toString(),这就是您所看到的列表元素。目前还不清楚routeTable的元素是什么。
您应该将BaseAdapter子类化,以便您可以自己为每个列表项构建必要的View。