2012-01-25 76 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(); 

我认为这会帮助你。

谢谢....