【问题标题】:Updating a value on a ArrayList which feeds a ListView is not displaying the new value更新提供 ListView 的 ArrayList 上的值不显示新值
【发布时间】:2016-05-14 09:32:28
【问题描述】:

我有一个cmets 的ListView,可以把它想象成一个Twitter。所以每条评论都有一个按钮和一个计数,就像一个转发按钮和一个显示转发数量的 TextView。单击该按钮时,我执行一个 AsyncTask 更新在线数据库上的值,当它返回时 更新 ArrayList 中的值。最后我打电话给notifyDataSetChanged(),也打电话给myTextView.SetText(//new number)但新的值永远不会显示,旧的值会留在用户界面上。 我跳过了不参与此操作的代码。

这是从适配器调用的 setOnClickListener:

agreeB.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
             FetchCommentToUpVote upVote = new FetchCommentToUpVote();
             upVote.execute(getItem(position).getId());
        }

}

这就是我更新 ArrayList 的本地值以及尝试显示它的方式:

@Override
protected Integer doInBackground(String... params) {                 
     CommentsFragment.lista.set(mPosition, commentFetched);
}

@Override
    protected void onPostExecute(Integer pos){

        num_agree.setText(Integer.toString(CommentsFragment.lista.get(pos).getAgree()));

        notifyDataSetChanged();

}

我已经检查过了,ArrayList 中的值肯定发生了变化,但从未显示。 提前致谢!

【问题讨论】:

  • @g2o 它有 200 行长... :S 这就是为什么只将参与此操作的代码和 TextView 放在一起
  • 好吧,我只需要它来检查您的 CommentsFragment.lista,顺便说一句,我假设您说西班牙语...所以我用西班牙语写给您:)...muchos problemas parecidos son porque la lista que tienes en CommentsFragment.lista no esta sincronizada con la lista del adapter :)
  • Puede ser que sea eso dado que en el Fragment incializo el Adaptador una unica vez en el onCreateView。 ¿Como puedo hacer que este constantemente sincronizada?
  • Voy a ponerlo como respuesta ;) en ingles...
  • 什么是num_agree

标签: java android listview arraylist


【解决方案1】:

检查您的 CommentsFragment.lista 和您的数组适配器变量是否已同步。

编辑:在您的适配器中创建一个方法 setArrayItems 并在您的 CommentsFragment.lista 更新时调用它。

希望对你有帮助!!

【讨论】:

  • 对不起,我真的不明白 setArrayItems 方法应该做什么,因为适配器不是拥有这些项目的那个......
  • 你能把你的答案扩展一下吗?
猜你喜欢
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 2021-01-21
  • 2016-04-18
  • 1970-01-01
  • 2017-03-20
  • 2021-06-17
  • 1970-01-01
相关资源
最近更新 更多