我有一个评论列表视图,将其视为某种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中的值肯定已经改变但从未显示过。 先谢谢!
答案 0 :(得分:0)
检查您的function var_export_short($data, $return=true)
{
$dump = var_export($data, true);
$dump = preg_replace('#(?:\A|\n)([ ]*)array \(#i', '[', $dump); // Starts
$dump = preg_replace('#\n([ ]*)\),#', "\n$1],", $dump); // Ends
$dump = preg_replace('#=> \[\n\s+\],\n#', "=> [],\n", $dump); // Empties
if (gettype($data) == 'object') { // Deal with object states
$dump = str_replace('__set_state(array(', '__set_state([', $dump);
$dump = preg_replace('#\)\)$#', "])", $dump);
} else {
$dump = preg_replace('#\)$#', "]", $dump);
}
if ($return===true) {
return $dump;
} else {
echo $dump;
}
}
和您的数组适配器变量是否同步。
编辑:在适配器中创建方法setArrayItems,并在更新CommentsFragment.lista
时调用此方法。
希望它有所帮助!!