Android 刷新列表视图
我知道有人问了我很多问题,但我就是做不到 我有一个列表视图,我正在尝试更新它 编辑:所有的代码,也许我在别的地方弄错了Android 刷新列表视图,android,listview,Android,Listview,我知道有人问了我很多问题,但我就是做不到 我有一个列表视图,我正在尝试更新它 编辑:所有的代码,也许我在别的地方弄错了 public class TestActivity extends Activity { private TasksDataSource dataSource; private ArrayAdapter<Task> adapter; private ListView list; /** Called when the activity is first create
public class TestActivity extends Activity {
private TasksDataSource dataSource;
private ArrayAdapter<Task> adapter;
private ListView list;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
list = (ListView) findViewById(R.id.list);
Button btnAdd = (Button) findViewById(R.id.btnAdd);
Button btnRefresh = (Button) findViewById(R.id.btnRefresh);
Button btnClear = (Button) findViewById(R.id.btnClear);
dataSource = new TasksDataSource(this);
dataSource.open();
List<Task> tasks = dataSource.getAllTasks();
adapter = new ArrayAdapter<Task>(this, android.R.layout.simple_list_item_1, tasks);
list.setAdapter(adapter);
btnAdd.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent startAddIntent = new Intent(TestActivity.this, AddActivity.class);
TestActivity.this.startActivity(startAddIntent);
}
});
btnRefresh.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
updateList();
}
});
btnClear.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
dataSource.deleteAll();
}
});
}
我尝试了很多不同的方法,但似乎都不管用
提前准备好。试试看
public void updateList(){
runOnUiThread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
adapter.notifyDataSetChanged();
list.refreshDrawableState();
list.invalidate();
}
});
}
两者
及
应该更新您的视图
我唯一一次看到这种方法不起作用,是因为处理notify/invalidate消息时出现了延迟。如果UI线程上运行多个排队消息,则必须以串行方式处理它们。只有一个UI线程,所有UI操作都必须处理该线程。确保您没有等待UI线程上的其他事情完成,您的代码应该可以工作。什么让您认为它不工作?你的数据集有变化吗?应该有变化。我需要在什么地方更新它吗?我编辑了这篇文章,包括数据源代码。通过CursorAdapter对附加到ListView的数据库或内容提供程序游标调用requery()会自动刷新列表
public void updateList(){
runOnUiThread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
adapter.notifyDataSetChanged();
list.refreshDrawableState();
list.invalidate();
}
});
}
notifyDataSetChanged();
invalidate()