设置适配器后,在ListView中更改项目

时间:2011-05-01 13:28:54

标签: android

设置ListView的适配器后,我需要从线程中重置项目,如下所示

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.main);
    listView = (ListView) findViewById(R.id.ListView01);
    listView.setOnItemClickListener(this);
    DirectoryBrowser dirBrowser= new DirectoryBrowser();
    Vector<List<String>> fileCollection=dirBrowser.getList();
    List<String> filesNames= fileCollection.elementAt(0);
    List<String> filesDate= fileCollection.elementAt(1);
    List<String> filesSize= fileCollection.elementAt(2);
    filesPath= fileCollection.elementAt(3);

    Log.d("swv file","swv file=" + filesDate.size());
    final MyArrayAdapter myAdapter= new MyArrayAdapter(this, filesNames,filesDate,filesSize);
    int res=myAdapter.getCount();
    listView.setAdapter(myAdapter);
    myAdapter.notifyDataSetChanged();
    Thread thread= new Thread(new Runnable() {
        public void run() {
            View rowView =myAdapter.getView(0, null, null);
            ViewHolder holder = new ViewHolder();
            holder.tv_name = (TextView) rowView.findViewById(R.id.label);
            holder.tv_name.setText("dddddd");
            myAdapter.notifyDataSetChanged();
        }
    });
    thread.start();
    myAdapter.notifyDataSetChanged();
}

我的问题是项目未更改

1 个答案:

答案 0 :(得分:1)

您必须更改模型,在您的情况下,您绑定到适配器的列表。你正在做的是直接改变通常由适配器填充的TextView。但是,当您不更改模型时,适配器将覆盖您对TextView所做的更改。

因此,更改模型,然后调用myAdapter.notifyDataSetChanged()。