0

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

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 来做这件事,这一切都显示出来了,但总是只有那个文本,而不是视图本身。

4

1 回答 1

1

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

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

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

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

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

于 2013-05-26T01:33:02.050 回答