更改Android ListView组件

更改Android ListView组件,android,android-layout,android-listview,Android,Android Layout,Android Listview,我非常感谢这个非常好的网站。 在这里,我用另一种情况来扩展我的帖子。 我正在创建一个listview,作为listview listview=new listview(上下文);在我的活动中,我编写了MyCustomAdapter,它扩展了BaseAdapter。将此自定义适配器设置为我如上所述创建的listView.setAdapter(myCustomAdpObj)对象。在getView(…)MyCustomAdapter类的方法我正在使用我的自定义布局类,因为MyCustomView扩展了

我非常感谢这个非常好的网站。 在这里,我用另一种情况来扩展我的帖子。
我正在创建一个listview,作为listview listview=new listview(上下文);在我的活动中,我编写了MyCustomAdapter,它扩展了BaseAdapter。将此自定义适配器设置为我如上所述创建的listView.setAdapter(myCustomAdpObj)对象。在getView(…)MyCustomAdapter类的方法我正在使用我的自定义布局类,因为MyCustomView扩展了LinearLayout,MyCustomView包含诸如TextView ImageView等GUI组件。这意味着我有三个不同的类作为MyActivity,MyCustomAdapter和MyCustomView。现在在MyActivity中,我想访问特定元素,如ImageView,并想更改其背景或src图像。是否有帮助?

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

@Dan S感谢您的回答,但处理程序工作正常。当我们调用Adapter.notifyDataSetChanged()时,需要让handler更新GUI;。这意味着如果notifyDataSetChanged ListView未更新,则将处理程序post方法放入此方法中调用此notifyDataSetChanged

这是否正确地总结了您的问题:“如何根据绑定到每个列表项的数据更改ListView中每个列表项中的各个视图?”@Dan S首先是的,我正在动态地将视图添加到我的ListView。现在我想在运行时更改已添加项的某些项(如ImageView背景或TextView文本等)?getView()是动态地添加和删除视图还是仅创建列表项?这一切都与你的活页夹有多复杂有关。@Dan是的,它每天都在添加和创建视图。下面我粘贴MyCustomAdapter的getView complete方法private List currentUserBean;公共视图getView(int位置,视图convertView,视图组父级){UserBean UserBean=currentUserBean.get(位置);视图v=new MyCustomView(this.context,UserBean);返回v;}这意味着,当我使用扩展BaseAdapter的自定义适配器时,不可能更改ImageView映像?可以使用
getView
更改内容,但这样做更麻烦。现在,我可以使用以下代码向现有ListView添加新视图MyChatListBean newChatBean=chatSessionArrayList.get(index);setMsgStatus(statustype);set(索引,newChatBean);((BaseAdapter)listView.getAdapter()).notifyDataSetChanged();我还在我的主要帖子中附加了一个图像。现在问题来了notifyDataSetChanged()不显示新添加的图像,但是,当我通过单击聊天屏幕的编辑文本来隐藏和显示软键盘时,如上面显示的图片视图所示。它看起来是ListView而不是正在刷新还是其他?如何刷新ListView?如果
SimpleAdapter.notifyDataSetChanged()
不工作,请尝试
SimpleAdapter.notifyDataSetValidated()