如何在每个 ListItem 中创建一个值不随每个新项目更改的变量?

By simon at 2019-05-15 • 0人收藏 • 23人看过

我在我的 Android Studio 项目中有一个 ListView,它显示了一个用户通过向上 / 向下投票系统进行投票的项目列表,类似于 SO。 数据库保存用户对每个项目的投票——1、0或1——并且它存储在 String 中铸造在我的列表视图适配器中。 当用户单击上箭头或下箭头时,铸造分别向上或向下递增,并将新值发送到数据库。 问题是,对于列表中的每个新项,铸造被设置为该位置的值。 因此,如果我有5个项目,价值铸造总是设置为第五项。 试图更改第一个列表位置中的值将首先获取铸造值从位置5,而不是1,并增加它根据按钮按下。

我有一个有效的工作区,其中我创建了一个 TextView,其可见性设置为放眼望去在 list 视图适配器中,将文本设置为铸造. 然后,我从 TextView 中获取文本值,并使用它来知道每个列表项中的值。 我可以理解为什么这样做是有效的,但是我不能想象没有一种更有说服力的方法不需要为一个占位符创建一个 TextView,而是创建一个包含在列表项中的变量。

句子太长,请短一点。 句子太长,请短一点。 { cast"1"; / / Update database with new value } else if (viewHolder.castText.getText (). 1)){ / / / Do nothing } else if (viewHolder.castText.getText (). { cast"0"; / / Update database with new value }}) ; viewHolder.downVote.setOnClickListener (new View.OnClickListener (){@override public void onClick (View v){ if (viewHolder.castText.getText ()). { cast"-1"; / / Update database with new value } else if (viewHolder.castText.getText ()). { / / Do nothing } else if (viewHolder.castText.getText (). 返回 convertView; } public class ItemViewHolder { TextView castText; ImageView upVote; ImageView downVote; }

登录后方可回帖

Loading...