在ListView中唯一标识一个项目的元素

在ListView中唯一标识一个项目的元素

问题描述:

你能帮我找到某个项目的textView吗?例如,我有一个listView与一些项目,每个项目由3个textViews(名称,价格,描述)。现在我想用updateView(int index)方法更改“price”textView的值。如何在正确的项目中识别正确的textView?在ListView中唯一标识一个项目的元素

比方说,我有5个项目(product1,...,product5)。 现在我想更新第三个产品(product3)的价格。 我打电话updateView(3) 我的UpdateView(INT指数)方法至今

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

+0

为什么不更新数据源并在适配器上调用'notifyDataSetChanged()'? –

+0

问题是,当我试图做到这一点findViewById(R.id.tvPrice)它更新第一个项目的tvPrice每次,它似乎我不能完全控制它......我需要的是一种方法确定哪个tvPrice在第一个项目中,在第二个项目中等等,然后能够调用该特定的tvPrice,然后在该文本视图中调用像'setText()'或者我错过了什么 –

+0

有一个比做那一切更容易。让ListView为你工作。只需更改数据源,您的ArrayList或您正在用作数据源的任何东西。 –

的方式,我通常做法,这将是做到以下几点:

  • 为你的列表项目创建一个模型(现在人们更喜欢使用RecyclerView) - 当然模型将有字段/变量表示你想要显示的内容(比如3字符串)。
  • 现在,为了实际跟踪用户点击的项目,我可以通过在我的适配器中调用一个自定义方法(如getItem(int position))来简单地获取该项目的id(存储该项目的表的列) )它返回一个实际的项目。
  • getItem方法将使用getId()getter方法向我返回一个项目。
  • 现在注意到当你创建你的列表项目传递给你的自定义适配器时,你的列表项目模型必须在它的构造函数中需要一个(id)值,因为这就是你如何能够访问你表格中的实际值编辑。
  • 那么你可以使用你点击的项目的ID来查询你的表格并更新它,并且只需通过你的适配器自动更新视图。

我希望这有助于!

+0

感谢您的快速回复,但是这里有个问题,即时通讯并没有使用'onClick'方法,我通过GCM发送新的价格(以及它所影响的行的id),并用'BroadcastReceiver' 。是的,我做了我自己的CustomAdapter,它在构造函数中获得了一个'layoutResource'(有三个textViews),但我仍然不明白我如何访问该项目内的电视节目,并且非常感谢您是否可以为我提供一个例如(我没有在android开发中经历过)非常感谢您花时间帮助。 –