【问题标题】:Reload android activity without finishing it重新加载android活动而不完成它
【发布时间】:2011-12-17 08:36:36
【问题描述】:

我有一个扩展 ListActivity 的 android 活动。每次按下列表项时,活动都应更改其状态(新列表适配器)并重新加载。要在项目单击上执行此操作,我为列表创建新的 ArrayAdapter 并设置它,但不是重置项目列表,而是将新项目附加到旧项目。如何删除旧的列表项并设置新的?

private void update() {
    if (flag == null) {
        //do nothing
    } else {
        list_items = new Vector();
        list_items.addAll(getNewListItems());
    }
    String[] items = new String[list_items.size()];
    for (int i=0; i<list_items.size(); i++) 
        items[i] = list_items.get(i).toString();
    setListAdapter(new ArrayAdapter<String>(this, R.layout.menu_layout, R.id.label, items));
}

【问题讨论】:

  • 你不能只使用adapter.notifyDataSetChanged()

标签: android reload listactivity


【解决方案1】:

制作一个自定义适配器,然后

您可以删除旧项目,将新项目添加到您的 String[] items

只需拨打notifyDataSetChanged() 到您的适配器...

那么您不必每次都调用新适配器..

【讨论】:

  • 实际上每次我创建一个新的适配器,是不是错了?无论如何,我尝试在自定义适配器的 getView 方法中调用 notifyDataSetChanged() 并没有帮助 - 仍然显示旧项目
  • 是的,每次创建新适配器都是错误的,您必须在创建新的 String[] 项目数组(删除旧的)后调用 notifyDataSetChanged() 而不是 getView()..
【解决方案2】:

您应该在适配器上使用 notifyDataSetChanged(),然后它会自动重新加载列表中的所有项目。

您可以在 thisGoogle IO 视频中找到更多解释,从 17.00 开始

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2012-06-13
    相关资源
    最近更新 更多