设置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();
}
我的问题是项目未更改
答案 0 :(得分:1)
您必须更改模型,在您的情况下,您绑定到适配器的列表。你正在做的是直接改变通常由适配器填充的TextView。但是,当您不更改模型时,适配器将覆盖您对TextView所做的更改。
因此,更改模型,然后调用myAdapter.notifyDataSetChanged()。