gpt4 book ai didi

android - 如何更改数组适配器中包含的 TextView 中的值

转载 作者:行者123 更新时间:2023-11-29 01:56:54 25 4
gpt4 key购买 nike

我有一个 ListView ,它由遵循 ViewHolder 模式的数组适配器填充。当有人单击一个按钮时,每一行都相当复杂,我想增加该行中显示的计数并更新该行中的文本字符串。

到目前为止,我已经正确填充了所有内容,但是当我单击一个单元格上的按钮时,如果它已创建,它也会更改下一行的值。

我试过了 notifyDataSetChanged()但这会重新填充整个列表,这对我的情况来说并不理想。

因为我正在定义我的 onClick()数组适配器中的方法我有一个 RowHolder 类,它包含行 v以及填充该行的项目 MainListItem列表项。

class RowHolder{
View v;
MainListItem i;
RowHolder(View v, MainListItem i){
this.v = v;
this.i=i;
}
}

这是来自 onClick() 的 fragment h 是 holder 的按钮的

    h.loveButton.setBackgroundColor(Color.parseColor(rowHolder.i.brandLoveColor));
h.loveButton.setImageResource(R.drawable.lovewhite);
((ImageView)rowHolder.v.findViewById(R.id.lovebutton)).setImageResource(R.drawable.lovewhite);
rowHolder.v.findViewById(R.id.lovebutton).setBackgroundColor(Color.parseColor(rowHolder.i.brandLoveColor));
String newLovers = getLoverString(rowHolder.i,rowHolder);
h.lovers.setText(newLovers);
((TextView)rowHolder.v.findViewById(R.id.lovers)).setText(newLovers);
rowHolder.i.loverString = newLovers;
rowHolder.i.loved = true;
int tmp = rowHolder.i.loves
tmp = tmp + 1;
((TextView)rowHolder.v.findViewById(R.id.lovecount)).setText(String.valueOf(tmp));
h.lovecount.setText(String.valueOf(tmp));
rowHolder.i.loves = tmp;

单击按钮时,我更改提供 ListView 的数据中的值以及持有 View 的容器中的数据以及实际 View 中显示的数据。

除了当我更改实际 View 中的值时,它最终会更改所有可见行的值之外,此实现工作得相当好。

如果有人能帮我想出更好的方法来完成这个,那就太好了。

最佳答案

I've tried notifyDataSetChanged() but this repopulates the whole list, which is not ideal for my case.

这是您需要解决的一个问题。 View 只是显示数据。实现一个快速刷新数据的适配器取决于您。例如,如果您加载位图,然后缓存它们以备后用。当然,第一次加载可能需要一些时间,但第二次加载可能是即时的。

I have a RowHolder class that holds the row v as well as the item populating that row MainListItemof the list item.

像这样将项目和行 bundle 在一起并不理想。 Android 回收 View ,这使得这很难保持直线。正如你所发现的。我发现 View 的 settag 方法可以非常方便地处理此类问题。如果一个 View 需要知道它与适配器中的哪个项目相关联,请使用 setTag 来跟踪它。适配器的 getView 方法是设置它的最佳位置。我会从设计中完全移除支架。尽量让数据与 View 关联的地方非常少。

一旦您将数据与 View 分离并使适配器快速刷新。您只需更新数据,其他一切正常。

有关模型- View - Controller 设计模式的更多信息,请阅读。

关于android - 如何更改数组适配器中包含的 TextView 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14655281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com