在我的一项活动中,我有EditText
,提交Button
和ListView
。 ListView
的数据从数据库中恢复。要从数据库中检索数据并适应ListView
,我使用了以下代码。
private void loadList() {
mylist = new ArrayList<HashMap<String, Object>>();
mylist.clear();
List<Data> catDesc = dbhelper.getCatMasterDesc(id);
ArrayAdapter<Data> adapter = new SimpleAdapter(getApplicationContext(), R.layout.list, catDesc);
lv1 = (ListView) findViewById(R.id.masListView1);
lv1.setAdapter(adapter);
}
每当我更新数据库以显示更新的列表视图时,我都会调用此方法。
String str = category.getText().toString();
yes.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
dbhelper.UpdateMasterDesc(str);
loadList(); // see here.
}
});
这是我更新ListView
的方式。我认为这不是一个好方法。如果是,则建议我如何在更新数据库时更新ListView
。
谢谢。
答案 0 :(得分:0)
notifyDataSetchanged()是Raghunandan提出的答案。
但在调用它之前,您需要更新已包含在catDesc列表中的对象数据。
从您的代码判断,我相信
dbhelper.UpdateMasterDesc(str);
是否正在添加新类别?如果是,请执行
catDesc.add(new Data(whatever you need to declare it with str))
在调用notifyDataSetChanged()之前。