2012-06-11 6 views
0

Список покупок приложений Я пытаюсь как упражнение имеет следующие виды деятельности:Android: notifyDataSetChanged не работает

  1. ShoppingListMain - список торговых списков
  2. ShoppingListActivity - Тот, который отображает все покупки элементы списка для определенного списка покупок
  3. ListItemEditActivity - Тот, который позволяет редактировать детали элемента

список покупок Когда я добавить новый список покупок (в действии №1), ListView отлично обновляется. Однако, когда я добавляю новый элемент списка покупок (в действии № 2), мне нужно нажать кнопку «Назад» и вернуться в любой список покупок, я добавил новый элемент, чтобы этот элемент появился в ListView.

Я уже пробовал предложения в следующих пост/с, но до сих пор не повезло с ListView ShoppingListActivity.

Любая помощь с этой проблемой было бы весьма признателен.

код, который я использовал для добавления новых списков покупок ...

ShoppingListApplication.java

public void insertShoppingList(ShoppingList shoppingList) { 
    assert(shoppingList != null); 

    long id = mDbAdapter.insertShoppingList(shoppingList.getName()); 
    shoppingList.setId(id); 
    mShoppingLists.add(shoppingList); 
} 

ShoppingListMain.java

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(); 
     } 
    }); 

Для добавления новых элементов в индивидуальные списки покупок ...

ShoppingListActivity.java

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(); 
+0

Вы пробовали 'requery()' на вашем курсоре? (Или асинхронный эквивалент swapping курсоров, так как requery устарел) – Barak

ответ

3
public void insertShoppingList(ShoppingList shoppingList) { 
    assert(shoppingList != null); 
    long id = mDbAdapter.insertShoppingList(shoppingList.getName()); 
    shoppingList.setId(id); 
    mShoppingLists.add(shoppingList); 
    mListAdapter.notifyDataSetChanged(); 
} 

Вы должны вызвать adapter.notifyDataSetChanged() вручную.

+0

Это логика ShoppingListActivity (добавление элементов в список покупок), это проблема, а не ShoppingListMain и ShoppingListApplication (которые касаются добавления самих списков покупок). – MissPiplup

Смежные вопросы