android更改行列表视图里面的listview相关的一个片段

时间:2014-11-16 06:56:43

标签: android listview android-fragments android-listview android-asynctask

我开发了一个基于服务器连接的应用程序,并从服务器下载内容。用于通知下载文件pr的进度以便更改包含它的片段中一个Listview的行项目的视图我在我的自定义适配器中提供了一些代码以保留 convertView 对象:

    public View getView(int position, View view, ViewGroup parent) {
    // TODO Auto-generated method stub
    View convertView = view;
    final MusicDownloadStructure data = getItem(position);

       if (convertView == null) {
           LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
           convertView = inflater.inflate(R.layout.tab2_online_store_row_item,
                parent, false);
           data.view = convertView;
       } else {
           data.view = convertView;
       }
     }

运行asynctask线程时,我使用此对象将Listview行项的视图更改为:

    protected void onProgressUpdate(Long... values) {
        if (mdata.view != null) {
        TextView statusTextView = (TextView) mdata.view
                .findViewById(com.example.app.R.id.tab2_downloadProgressText);
        statusTextView.setText(String.Valueof(values[0]));
    }

问题:
1-当asynctask执行Textview时不改变尽管onProgressUpdate应该在UI线程上运行 2 - 有时候这个元素的文本开始改变其他行影响这个改变! anynody可以帮忙吗?
提前致谢

1 个答案:

答案 0 :(得分:1)

尝试拨打notifyDataSetChanged

void onProgressUpdate(Long... values) {
            if (mdata.view != null) {
            TextView statusTextView = (TextView) mdata.view
                    .findViewById(com.example.app.R.id.tab2_downloadProgressText);
            statusTextView.setText(String.Valueof(values[0]));
            myListView.notifyDataSetChanged(); //or simply notifyDataSetChanged if your Async inside adapter
        }