ListView仅显示文本而不显示视图

时间:2013-05-26 00:40:17

标签: android listview button text view

我一整天都在搜索和测试,但我没有找到解决这个问题的方法。我有一个ListView,我想在其中显示一些视图。但每次我添加一个视图时,它只显示listItems的类或id而不是Views本身。像:

android.widget.Button{40f090e0VFED.. C. ..........l. 0,0-0,0}

我做错了什么!?我是否必须设置某个标签!? 这就是我的Listview在xml文件中实现的方式

<ListView
    android:id="@+id/listView1"
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    android:animateLayoutChanges="true"
    android:clipChildren="true"
    android:clipToPadding="true"
    android:dividerHeight="1dp"
    android:focusableInTouchMode="true"
    android:headerDividersEnabled="true"
    android:scrollbarStyle="insideInset"
    android:scrollbars="vertical|horizontal"
    android:splitMotionEvents="true" >

这是活动中的java代码:

Button[] test = new Button[3];
test[0] = new Button((Activity) _mycontext);
test[1] = new Button((Activity) _mycontext);
test[2] = new Button((Activity) _mycontext);
test[0].setText("Test-Button 1");
test[1].setText("Test-Button 2");
test[2].setText("Test-Button 3");
_dt_columns.setAdapter(new ArrayAdapter<View>((Activity) _mycontext, android.R.layout.simple_list_item_1, test));
_dt_columns.notifyAll();

我也使用“扩展ListActivity”和Inflater一直这样做,但它总是出现,但总是只有那些文本,而不是视图本身。

1 个答案:

答案 0 :(得分:1)

ArrayAdapter仅使用一个TextView填充ListView,每个项目可能有一些复杂的布局,但它们之间的唯一区别是TextView值。

您将View元素作为列表项和适配器调用toString方法传递给它们以填充此TextView,这是您从中获取此“奇怪”值的地方。

为具有所需结构的单个列表项创建您自己的xml布局资源,而不是使用android.R.layout.simple_list_item_1。 并像这样创建你的asdapter

ArrayAdapter<YourObject> adapter = new ArrayAdapter<YourObject>(this, R.layout.listitem, R.id.textview_inside_listitem, YourObject[])

其中YourObject是一个类,您创建的类用于保存单个项目的数据,而toString方法返回值您希望显示在列表中。