【发布时间】: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