安卓 onResume 更新列表适配器

13

我正在使用列表适配器来显示不同的商店,当有人选择一个商店时,它会带他们到新的活动界面,在那里他们可以在该屏幕上将商店添加到收藏夹。

那里有一个返回按钮调用finish();,回到列表视图屏幕。

现在的问题是列表视图没有更新(即没有显示商店已经被添加到收藏夹)。我尝试了这段代码,但没有成功:

@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并更新名称和状态数组。

使用这段代码,列表实际上并没有更新...


可能会对你有帮助:https://dev59.com/pGgt5IYBdhLWcg3w8iDe#17333384 - boiledwater
4个回答

32

您应该只在 onCreate() 中设置适配器,在 onResume() 中,您只需要使用新的数据集合调用 adapter.notifyDataSetChanged()。这将使用新的数据集合刷新您的 ListView。


4
使用以下代码:
myList.clear();
myList.add("your array list items");            
setListAdapter(adapter);
adapter.notifyDataSetChanged();

我认为这会对你有所帮助。

谢谢....


1
首先,您需要将商店列表添加到ArrayList中, 将此数组列表提交给适配器,然后将其添加到列表视图中。
 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());

将该ArrayList添加到Adapter中并编写代码。
 list.setAdapter(adapter);

-1

在向listView添加新的View之前,请删除所有先前的View

listView.removeAllViews(); 

然后添加适配器类与新值。确保你的值在从第二个活动返回时得到更新,而且这段代码正在被调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接