是否有任何已知的习惯来高效地加载 Android ListViews?
Is there any known habit to performantly load Android ListViews?
基本说明情况:
我正计划为学生创建一个学校时间表应用程序。我的应用程序目前只是一个基本的 MainActivity,它有一个侧边抽屉,如果你点击一个项目,它会膨胀选定的片段。我的问题涉及我目前正在处理的主题列表。单击 "SubjectsFragment" 片段中的 FAB 时,它会打开一个 Activity,您可以在其中添加主题。添加主题后,它会显示在 "SubjectsFragment" 中 - 所以,非常基本。我已经关闭了所有数据库逻辑并创建了一个自定义适配器。但这些甚至都不是问题的根源。
现在我的问题是:
当我打开 Fragment 时,它在填充 ListView 时滞后了很短的时间。虽然只需要很少的时间,但它肯定是引人注目的,这意味着,UIThread 被阻塞了。
我没有发现任何与我当前使用的不同的实现,我想知道是否有其他方法来填充 ListView。使用 AsyncTask 没有意义,因为 ListView 的填充仍然发生在 UIThread 上。
这是我实现的一小段代码:
mListView = rootView.findViewById(R.id.subjectsListView);
ArrayList<Subject> subjectList = new ArrayList<>();
subject = new Subject("A", "B", "C", "D");
for (int i = 0; i < 100; i++) { //for loop just to add 100 items
subjectList.add(subject);
}
ListAdapterView adapter = new ListAdapterView(getActivity(), R.layout.fragment_subjects_listitem, subjectList);
mListView.setAdapter(adapter);
为了理解我的问题,没有必要知道我的适配器是如何工作的,因为 Android Studio 的预加载适配器也会发生这种情况。在此代码片段中,将 100 个项目添加到列表中。但遗憾的是,只有 20 个项目也会出现微延迟。
是否有任何 better/different 方法可以实现它并且不会使其滞后?对不起,如果这听起来很愚蠢,但我对 Android 编程仍然很陌生并且一直在学习。
ListView 是 Android 中创建列表的旧方法。有一种better/faster方式,RecyclerView. Example 1, example 2
基本说明情况:
我正计划为学生创建一个学校时间表应用程序。我的应用程序目前只是一个基本的 MainActivity,它有一个侧边抽屉,如果你点击一个项目,它会膨胀选定的片段。我的问题涉及我目前正在处理的主题列表。单击 "SubjectsFragment" 片段中的 FAB 时,它会打开一个 Activity,您可以在其中添加主题。添加主题后,它会显示在 "SubjectsFragment" 中 - 所以,非常基本。我已经关闭了所有数据库逻辑并创建了一个自定义适配器。但这些甚至都不是问题的根源。
现在我的问题是:
当我打开 Fragment 时,它在填充 ListView 时滞后了很短的时间。虽然只需要很少的时间,但它肯定是引人注目的,这意味着,UIThread 被阻塞了。
我没有发现任何与我当前使用的不同的实现,我想知道是否有其他方法来填充 ListView。使用 AsyncTask 没有意义,因为 ListView 的填充仍然发生在 UIThread 上。
这是我实现的一小段代码:
mListView = rootView.findViewById(R.id.subjectsListView);
ArrayList<Subject> subjectList = new ArrayList<>();
subject = new Subject("A", "B", "C", "D");
for (int i = 0; i < 100; i++) { //for loop just to add 100 items
subjectList.add(subject);
}
ListAdapterView adapter = new ListAdapterView(getActivity(), R.layout.fragment_subjects_listitem, subjectList);
mListView.setAdapter(adapter);
为了理解我的问题,没有必要知道我的适配器是如何工作的,因为 Android Studio 的预加载适配器也会发生这种情况。在此代码片段中,将 100 个项目添加到列表中。但遗憾的是,只有 20 个项目也会出现微延迟。
是否有任何 better/different 方法可以实现它并且不会使其滞后?对不起,如果这听起来很愚蠢,但我对 Android 编程仍然很陌生并且一直在学习。
ListView 是 Android 中创建列表的旧方法。有一种better/faster方式,RecyclerView. Example 1, example 2