保存と編集の目的で同じアクティビティを使用します。リストビューがあります。
私が持っているリストフラグメントでは
@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
オブジェクトを使用してデータベース内の項目を更新します
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();
}
}
アクティビティから戻るときに、このメソッドを呼び出して、アダプターに変更を通知する必要がありますか? そうじゃない?
誰でも助けてもらえますか?