Android:notifyDataSetChanged不工作
作为练习,我尝试的购物清单应用程序具有以下活动:Android:notifyDataSetChanged不工作,android,android-listview,Android,Android Listview,作为练习,我尝试的购物清单应用程序具有以下活动: ShoppingListMain-购物清单的列表 ShoppingListActivity-显示特定购物清单的所有购物清单项目的活动 ListItemEditActivity-允许编辑购物列表项目详细信息的活动 当我添加一个新的购物列表(在活动#1中)时,列表视图会完全刷新。但是,当我添加一个新的购物列表项目(在活动#2中)时,我必须点击后退按钮并返回到我添加新项目的购物列表中,以使该项目显示在列表视图中 我已经在下面的帖子中尝试了这些建议,但仍
public void insertShoppingList(ShoppingList shoppingList) {
assert(shoppingList != null);
long id = mDbAdapter.insertShoppingList(shoppingList.getName());
shoppingList.setId(id);
mShoppingLists.add(shoppingList);
}
mNewListAddButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name = mNewListName.getText().toString();
ShoppingList newList = new ShoppingList();
newList.setName(name);
mApp.insertShoppingList(newList);
mNewListName.setText("");
mListAdapter.notifyDataSetChanged();
}
});
long id = mDbAdapter.insertListItem(mParentListId,
item.getDescription(), item.getQuantity(),
item.getUnitCost(), item.isPurchased(),
item.getNotes());
Log.i("ShoppingList", "New ID " + id);
item.setId(id);
mListItems.add(item);
mListAdapter.notifyDataSetChanged();
setListTotal();
ShoppingListMain.java
public void insertShoppingList(ShoppingList shoppingList) {
assert(shoppingList != null);
long id = mDbAdapter.insertShoppingList(shoppingList.getName());
shoppingList.setId(id);
mShoppingLists.add(shoppingList);
}
mNewListAddButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name = mNewListName.getText().toString();
ShoppingList newList = new ShoppingList();
newList.setName(name);
mApp.insertShoppingList(newList);
mNewListName.setText("");
mListAdapter.notifyDataSetChanged();
}
});
long id = mDbAdapter.insertListItem(mParentListId,
item.getDescription(), item.getQuantity(),
item.getUnitCost(), item.isPurchased(),
item.getNotes());
Log.i("ShoppingList", "New ID " + id);
item.setId(id);
mListItems.add(item);
mListAdapter.notifyDataSetChanged();
setListTotal();
用于将新项目添加到单个购物列表
ShoppingListActivity.java
public void insertShoppingList(ShoppingList shoppingList) {
assert(shoppingList != null);
long id = mDbAdapter.insertShoppingList(shoppingList.getName());
shoppingList.setId(id);
mShoppingLists.add(shoppingList);
}
mNewListAddButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name = mNewListName.getText().toString();
ShoppingList newList = new ShoppingList();
newList.setName(name);
mApp.insertShoppingList(newList);
mNewListName.setText("");
mListAdapter.notifyDataSetChanged();
}
});
long id = mDbAdapter.insertListItem(mParentListId,
item.getDescription(), item.getQuantity(),
item.getUnitCost(), item.isPurchased(),
item.getNotes());
Log.i("ShoppingList", "New ID " + id);
item.setId(id);
mListItems.add(item);
mListAdapter.notifyDataSetChanged();
setListTotal();
您必须手动调用adapter.notifyDataSetChanged()
您必须手动调用adapter.notifyDataSetChanged()。问题出在ShoppingListActivity的逻辑(将项目添加到购物列表),而不是ShoppingListMain和ShoppingListApplication(它们自己处理添加购物列表)。问题出在ShoppingListActivity的逻辑(将项目添加到购物列表),不是ShoppingListMain和ShoppingListApplication(它们自己处理添加购物列表的问题)。您是否在光标上尝试了
requery()
?(或者由于requery已被弃用,因此与交换游标的异步等效)您是否在游标上尝试过requery()
?(或者由于不推荐重新查询,因此与交换游标的异步等效)