我一整天都在搜索和测试,但我没有找到解决这个问题的方法。我有一个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一直这样做,但它总是出现,但总是只有那些文本,而不是视图本身。
答案 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方法返回值您希望显示在列表中。