Java 唯一标识一个项目';ListView中的s元素
你能帮我找到某个项目的文本视图吗。例如,我有一个包含一些项目的列表视图,每个项目由3个文本视图(名称、价格、说明)组成。现在我想用和updateView(int index)方法更改“price”textView的值。如何在正确的项目中识别正确的文本视图 假设我有5个项目(产品1,…,产品5)。 现在我想更新第三个产品(product3)的价格。 我调用Java 唯一标识一个项目';ListView中的s元素,java,android,listview,Java,Android,Listview,你能帮我找到某个项目的文本视图吗。例如,我有一个包含一些项目的列表视图,每个项目由3个文本视图(名称、价格、说明)组成。现在我想用和updateView(int index)方法更改“price”textView的值。如何在正确的项目中识别正确的文本视图 假设我有5个项目(产品1,…,产品5)。 现在我想更新第三个产品(product3)的价格。 我调用updateView(3) 到目前为止,我的updateView(int index)方法 private void updateView(in
updateView(3)
到目前为止,我的updateView(int index)方法
private void updateView(int index){
// thats how I get the row
View v = lvProduct.getChildAt(index);
// now I want to find the tvPrice in that row
// but I'm not sure how to go about this
}
任何提示都很好:D我通常的做法是做以下几点:
- 为您的列表项创建一个模型(现在人们更喜欢使用RecyclerView)——该模型当然会包含表示您希望显示的内容的字段/变量(如3个字符串)
- 现在,为了实际跟踪用户单击的项目,我可以通过调用适配器中的自定义方法(如getItem(int position))来获取该项目的id(在数据库中存储该项目的表的列),该方法返回实际项目
- 该getItem方法将返回一个带有getId()getter方法的项
- 现在请注意,当您创建要传递给自定义适配器的列表项时,列表项模型必须在其构造函数中预期(id)值,因为这样您才能访问要编辑的表中的实际值
- 因此,您可以使用单击项的id查询表并更新它,只需通过适配器自动更新视图即可李>
我希望这有帮助 为什么不更新数据源并在适配器上调用
notifyDataSetChanged()
?问题是,当我尝试使用findViewById(R.id.tvPrice)执行此操作时,它会每次更新第一个项目的tvPrice,而我似乎无法完全控制它…我需要的是一种方法来识别第一个项目中的哪个tvPrice,这是在第二个,以此类推,然后能够调用特定的tvPrice,然后在该文本视图上调用像setText()
,或者我遗漏了什么。有一种方法比这更简单。让ListView为您完成工作。只需更改数据源、ArrayList或任何用作数据源的内容。感谢您的快速回复,但问题是,我根本没有使用onClick
方法,我通过GCM发送新的价格(以及它影响的行的id),并使用BroadcastReceiver
捕获它。是的,我做了我自己的CustomAdapter,它在构造函数中得到了一个布局资源
(有三个文本视图),但我仍然不明白如何访问项目中的tv-s,如果你能给我举个例子(我在android开发方面没有那么丰富的经验),我将不胜感激非常感谢您抽出时间来帮忙。