2012-01-25 108 views
11

我使用列表適配器來顯示不同的商店,當有人選擇一家商店時,它將他們帶到一個新的活動,他們可以在該屏幕上將商店添加到收藏夾。Android onResume更新列表適配器

有一個後退按鈕,調用finish();返回到列表視圖的屏幕。

現在的問題是listview沒有更新(即沒有顯示該商店已添加到收藏夾中)。我想這個代碼,但沒有運氣:

@Override 
public void onResume() { 
    super.onResume(); 
    list.setAdapter(null);  
    updateMyList(); 
    adapter=new LazyAdapter(this, ((String[])names.toArray(new String[0])), 
     ((String[])status.toArray(new String[0]))); 
    list.setAdapter(adapter); 
} 

updateMyList()調用服務器API和更新的名稱和狀態數組。

有了這個代碼列表中並沒有真正更新...

+0

http://stackoverflow.com/a/17333384/596555,可能會幫助你 – boiledwater

回答

29

您應該只在您的onCreate()中設置適配器,在onResume()之內,您只需使用新的數據集合調用adapter.notifyDataSetChanged()即可。這將使用新的數據集合刷新您的ListView。

0

然後加入新的查看到ListView中刪除所有以前的觀點

listView.removeAllViews(); 

,然後添加適配器類用新值。有一件事確保你從第二個活動返回時更新你的值,並且這個代碼正在調用。

1

首先所有的u需要存儲列表添加到ArrayList中, 提交此數組列表ADAPTER然後將其添加到列表視圖

list.setAdapter(adapter); 

它會顯示商店列表;拿onListItemClick點擊那裏你會得到listItem ID;通過使用列表項ID您可以給這樣的意圖

Intent intent=new Intent(getApplicationContext(),------.class); 
    startActivityForResult(intent); 

拿一個java bean/setter和getter方法類;將getter方法設爲靜態,將商店名稱設置爲您在子活動中創建的內容;覆蓋方法稱爲onBackPressed();在該方法內寫

setResult(RESULT_OK); 
finish(); 

在父類中採取方法onActivityForResult();該方法

arraylist.add(javabeanClassname.getName()); 

的內部的數組列表添加到Adapter和編寫代碼

list.setAdapter(adapter); 
4

使用此代碼:

myList.clear(); 
myList.add("your array list items");    
setListAdapter(adapter); 
adapter.notifyDataSetChanged(); 

我認爲這會幫助你。

謝謝....