android - 刷新 ArrayAdapter onResume [notifyDataSetChanged() 不工作]

标签 android refresh fragment android-arrayadapter

我正在使用 fragment 创建联系人列表应用程序,其中一个 fragment 是联系人列表中的姓名列表,另一个是其余详细信息。

这是显示姓名列表的类

public class MyListFragment extends ListFragment {

private ContactStorage contactStorage = new ContactStorage();

public final static String TAG = "FRAGMENTS";
private MainActivity parent;
ArrayAdapter<String> adapter;

ArrayList<String> entries = new ArrayList<String>();

String array[];

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.list_layout, null);
    parent = (MainActivity) getActivity();
    entries = contactStorage.getContactListNames();

    adapter = new ArrayAdapter<String>(getActivity().getApplicationContext(), 
            android.R.layout.simple_list_item_1, entries);

    setListAdapter(adapter);
    Log.d(TAG, "Adapter created");
    array = contactStorage.getContactDetails();
    return v;

}

@Override
public void onResume() {

    super.onResume();
    entries = contactStorage.getContactListNames();
    adapter.notifyDataSetChanged();
    Log.d(TAG, "List Frag Resumed");

}
}

我遇到的问题是 ArrayAdapter 不会在恢复时刷新。

当屏幕旋转时,它很好,因为 onCreateView() 再次运行,但我需要它来刷新 onResume。我查看了这个网站加载,发现除了“使用 notifyDataSetChanged()” 什么都不起作用。

最佳答案

您遇到的问题是您正在覆盖条目引用并且它在适配器上没有得到更改。这是解决此问题的方法

@Override
public void onResume() {

    super.onResume();
    entries.clear();
    entries.addAll(contactStorage.getContactListNames());
    adapter.notifyDataSetChanged();
    Log.d(TAG, "List Frag Resumed");

}

这是一个常见的错误,这是因为当你第一次创建一个列表(在内存中)并且你的 entries 字段指向它时,你然后告诉 adapter 在创建它时查看该内存位置,但是 onResume 您在内存中创建了一个新列表(当您再次获取联系人列表名称时)并告诉条目指向内存中的新列表,您需要做的是用新列表中的条目替换原始列表中的条目,这样 adapter 仍将引用相同的列表。

关于android - 刷新 ArrayAdapter onResume [notifyDataSetChanged() 不工作],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16219732/

相关文章:

java - 如何设置启动画面

android - 创建基础 PSD 来为 mdpi、320/480px 设备设计 Android App UI

pdf - 如何在 PDF 查看器上自动刷新?

android - 内部 fragment ViewPager 需要很长时间才能加载子 fragment

java - Android/Firebase : Glide not working inside one of my fragments

java - 在fragmentActivity和他的fragment之间传递变量

android - Flutter - 在应用程序中显示 android 主屏幕小部件

javascript - 如何在刷新页面时使页面重定向?

php - 刷新页面时停止向数据库中插入数据

android - 如何在创建时设置选定的选项卡作业