Android:notifyDataSetChanged不工作

Android:notifyDataSetChanged不工作,android,android-listview,Android,Android Listview,作为练习,我尝试的购物清单应用程序具有以下活动: ShoppingListMain-购物清单的列表 ShoppingListActivity-显示特定购物清单的所有购物清单项目的活动 ListItemEditActivity-允许编辑购物列表项目详细信息的活动 当我添加一个新的购物列表(在活动#1中)时,列表视图会完全刷新。但是,当我添加一个新的购物列表项目(在活动#2中)时,我必须点击后退按钮并返回到我添加新项目的购物列表中,以使该项目显示在列表视图中 我已经在下面的帖子中尝试了这些建议,但仍

作为练习,我尝试的购物清单应用程序具有以下活动:

  • ShoppingListMain-购物清单的列表
  • ShoppingListActivity-显示特定购物清单的所有购物清单项目的活动
  • ListItemEditActivity-允许编辑购物列表项目详细信息的活动
  • 当我添加一个新的购物列表(在活动#1中)时,列表视图会完全刷新。但是,当我添加一个新的购物列表项目(在活动#2中)时,我必须点击后退按钮并返回到我添加新项目的购物列表中,以使该项目显示在列表视图中

    我已经在下面的帖子中尝试了这些建议,但仍然没有成功使用ShoppingListActivity的ListView

    对此问题的任何帮助都将不胜感激

    我用来添加新购物清单的代码

    ShoppingListApplication.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();
    
    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()
    ?(或者由于不推荐重新查询,因此与交换游标的异步等效)