更新 ListView 的最佳实践
Best Practice updating ListView
我在做什么:
我正在开发的应用程序有一个可点击的主题列表,由用户系统地添加。在 term/semester 结束时,用户清除下一个列表,删除保存用户值的所有文件。
问题:
使用以下方法简单地刷新我正在处理的 activity 是否更好:
finish();
startActivity(getIntent());
或通过重新启动 ArrayAdapter(名为 listAdapter)并使用以下方法重置来清除列表:
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, R.id.rowTextView);
testListView.setAdapter(listAdapter);
或者有更好的方法吗?
更改数组中的值并调用 adapter.notifyDataSetChanged();
一般来说,关闭 Activity 被认为是不好的做法。
Android 上的 Activity 很繁重,大多数现代应用甚至不使用多个 Activity。
如果您想替换全部或部分内容,您可能需要考虑使用片段。片段是 UI 的一部分,独立于 Activity 工作。
在此处阅读有关片段的更多信息:https://developer.android.com/guide/components/fragments.html
如果 UI 保持不变并且您真的只想使用新的 ArrayAdapter,那么您的方法应该可行。如果它表示的数据发生变化,更好的方法是修改现有适配器。
我在做什么:
我正在开发的应用程序有一个可点击的主题列表,由用户系统地添加。在 term/semester 结束时,用户清除下一个列表,删除保存用户值的所有文件。
问题:
使用以下方法简单地刷新我正在处理的 activity 是否更好:
finish();
startActivity(getIntent());
或通过重新启动 ArrayAdapter(名为 listAdapter)并使用以下方法重置来清除列表:
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, R.id.rowTextView);
testListView.setAdapter(listAdapter);
或者有更好的方法吗?
更改数组中的值并调用 adapter.notifyDataSetChanged();
一般来说,关闭 Activity 被认为是不好的做法。 Android 上的 Activity 很繁重,大多数现代应用甚至不使用多个 Activity。
如果您想替换全部或部分内容,您可能需要考虑使用片段。片段是 UI 的一部分,独立于 Activity 工作。 在此处阅读有关片段的更多信息:https://developer.android.com/guide/components/fragments.html
如果 UI 保持不变并且您真的只想使用新的 ArrayAdapter,那么您的方法应该可行。如果它表示的数据发生变化,更好的方法是修改现有适配器。