【问题标题】:change Android ListView component更改 Android ListView 组件
【发布时间】:2011-10-10 22:18:21
【问题描述】:

我非常感谢这个非常好的网站。 在这里,我将在另一种情况下扩展我的Add/Remove Items to Android ListView 帖子。 我正在创建一个列表视图作为 ListView listView = new ListView(context);在我的活动中,我编写了扩展 BaseAdaptor 的 MyCustomAdapter。将此自定义适配器设置为我在上面创建的 listView.setAdapter(myCustomAdpObj) 对象。在 MyCustomAdapter 类的 getView(..) 方法中,我使用我的自定义 Layout 类作为 MyCustomView 扩展LinearLayout 和 MyCustomView 包含 GUI 组件,如 TextView ImageView 等。这意味着我有三个不同的类,即 MyActivity、MyCustomAdapter 和 MyCustomView。现在在 MyActivity 中我想访问特定元素,如 ImageView 并想更改其背景或 src 图像。有什么帮助吗?

【问题讨论】:

  • 这是否正确总结了您的问题:“如何根据绑定到每个列表项的数据更改 ListView 中每个列表项中的各个视图?”
  • @Dan S first 是的,我正在向我的 ListView 动态添加视图。现在我想在已添加项目的运行时更改一些项目(如 ImageView 背景或 TextView 文本等)?
  • 您的 getView() 是动态添加和删除视图还是只是创建列表项?这一切都与您的活页夹的复杂程度有关。
  • @Dan S 是的,它还可以每天添加和创建视图。下面我正在粘贴 MyCustomAdapter 的 getView 完整方法 private List currentUserBean; public View getView(int position, View convertView, ViewGroup parent) { UserBean userBean = currentUserBean.get(position);视图 v = new MyCustomView(this.context, userBean);返回 v; }

标签: android android-layout android-listview


【解决方案1】:

您似乎需要迁移到 SimpleAdapter 或 SimpleCursorAdapter(取决于您的后端数据)。从那里使用ViewBinder,以便您可以根据数据自定义列表项的外观。这也是您将使用ViewBinder.setViewValue 手动绑定数据的地方,此方法将在任何自动绑定发生之前调用,因此您可以返回 false 以允许发生自动绑定。 (自动绑定仅适用于 ImageView 和 TextView。)

【讨论】:

  • 这意味着当我使用扩展 BaseAdapter 的自定义适配器时无法更改 ImageView 图像?
  • 可以使用getView来改变内容,但是那样做比较麻烦。
  • 现在我可以使用此代码向现有 ListView 添加新视图 MyChatListBean newChatBean = chatSessionArrayList.get(index);newChatBean.setMsgStatus(statustype); chatSessionArrayList.set(index, newChatBean); ((BaseAdapter)listView.getAdapter()).notifyDataSetChanged();我还附上了我的主要帖子的图像。现在问题来了 notifyDataSetChanged() 不显示新添加的图像,但是当我通过单击聊天屏幕的 EditText 隐藏和显示软键盘时,如上图所示.它看起来 ListView 不刷新,否则如何刷新 ListView?
  • 如果SimpleAdapter.notifyDataSetChanged() 不起作用,请尝试SimpleAdapter.notifyDataSetInvalidated()
【解决方案2】:

@Dan S 感谢您的回答,但处理程序工作正常。当我们调用 Adapter.notifyDataSetChanged(); 时,需要将处理程序更新 GUI。这意味着如果 notifyDataSetChanged ListView 未更新则放置处理程序发布方法在这个方法里面调用这个 notifyDataSetChanged

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2013-09-24
    • 2015-11-07
    相关资源
    最近更新 更多