更新提供ListView的ArrayList上的值不会显示新值

时间:2016-02-04 16:41:39

标签: java android listview arraylist

我有一个评论列表视图,将其视为某种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中的值肯定已经改变但从未显示过。 先谢谢!

1 个答案:

答案 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时调用此方法。

希望它有所帮助!!