【问题标题】:ListView shows only text instead of ViewsListView 只显示文本而不是视图
【发布时间】:2013-05-26 00:40:17
【问题描述】:

我整天都在搜索和测试,但我没有找到任何解决此问题的方法。我有一个 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 来做这件事,它都显示出来了,但总是只有那个文本,而不是视图本身。

【问题讨论】:

  • 如果您只想在列表中显示按钮,您不需要自定义视图来膨胀吗?
  • 什么是“android.widget.Button{40f090e0VFED.. C. ..........l. 0,0-0,0}”
  • 对不起,我什至不明白你在做什么。 “具有某些视图的 ListView”是什么意思?
  • 我想在 ListView 的每一行中创建一组视图(2 个 TextView 和一个 ImageButton)!但首先,我什至想在 ListView 中加入一个不只是字符串的简单按钮!但是当我这样做时,只显示 lisview 中奇怪的“android.widget.Button{40...”文本,而不是按钮本身。
  • 我什至尝试从该页面导入和使用此代码:developer.android.com/guide/topics/ui/layout/listview.html,但在完成所有导入后出现两个错误。所以该代码实际上不起作用!

标签: android listview button text view


【解决方案1】:

ArrayAdapter 仅使用一个 TextView 填充 ListView,每个 item 可能有一些复杂的布局,但它们之间的唯一区别将是一个 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 方法返回值。

【讨论】:

  • 好的!谢谢!应该是这样!我会尝试并稍后提供反馈! :-)
猜你喜欢
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
  • 2016-09-04
  • 2014-04-28
相关资源
最近更新 更多