我将相同的活动用于保存和编辑目的。我有一个列表视图。
在列表片段中我有
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
if(dbHelper != null){
Item item = (Item) this.getListAdapter().getItem(position);
Intent intent = new Intent(getActivity(), SaveEditActivity.class);
intent.putExtra("Update_Item", item);
startActivity(intent);
}
}
现在在 SaveEditActivity 我有
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(....);
Intent intent = getIntent();
if(intent.hasExtra("Update_Item")){
Item item = (Item) intent.getSerializableExtra("Update_Item");
if(item != null){
this.isEdit = true;
this.editedItem = item;
setItemData(item); // set the data in activity
}
}
}
现在,当用户单击保存按钮时,我检查 isEdit 标志
if(isEdit == true){
updateItem();//update
}else{
saveItem(); // add
}
}
在 Update 方法中,我使用editedItem
Object更新数据库中的项目
private void updateItem(){
if(this.editedItem != null){
dbHelper.updateItem(editedItem);
}
}
但是我的列表视图没有用新数据刷新。
我正在使用customAdapter
which extends BaseAdapter
。
在 ListFragmet 中,我在 onResume() 方法中将数据加载到适配器中
@Override
public void onResume() {
super.onResume();
dbHelper = new DatabaseHandler(getActivity());
List<Item> existingItems = dbHelper.getItemData();
adapter = new CustomAdapter(getActivity().getApplicationContext(), existingItems);
if(adapter != null){
this.setListAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
现在,当从活动返回时,应该调用这个方法并且应该通知适配器更改?对不对?
有人可以帮忙吗?