提问人:Akshaya Amar 提问时间:5/13/2023 最后编辑:Akshaya Amar 更新时间:5/13/2023 访问量:24
在列表视图中一次显示 10 个项目,在滚动一段时间后显示接下来的 10 个项目,依此类推
Display 10 items at a time in list view and next 10 after some scroll and so on
问:
我想在列表视图中显示手机中所有已安装的应用程序。但是,我想一次显示 10 个应用程序。现在,当用户滚动时,应该显示另外 10 个(来自其余应用程序),依此类推。
这是我的代码
List<PackageInfo> packageList = getPackageManager().getInstalledPackages(0);
List<String> appNames = new ArrayList<>();
for (PackageInfo packageInfo : packageList) {
if ((packageInfo.applicationInfo.flags & android.content.pm.ApplicationInfo.FLAG_SYSTEM) == 0) {
appNames.add(packageInfo.applicationInfo.loadLabel(getPackageManager()).toString());
}
}
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, appNames);
listView.setAdapter(adapter);
任何建议如何实现此功能?
我已经实现了 RecyclerView 而不是列表视图,这是代码
private int visibleThreshold = 10;
--
--
--
appNames = new ArrayList<>();
adapter = new AppListAdapter(appNames);
recyclerView.setAdapter(adapter);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
totalItemCount = layoutManager.getItemCount();
lastVisibleItem = layoutManager.findLastVisibleItemPosition();
if (!loading && totalItemCount <= (lastVisibleItem + visibleThreshold)) {
// Load the next batch of applications
loadMoreApps();
loading = true;
}
}
});
loadMoreApps();
}
private void loadMoreApps() {
int start = appNames.size();
int end = start + 10;
List<PackageInfo> packageList = getPackageManager().getInstalledPackages(0);
for (int i = start; i < Math.min(end, packageList.size()); i++) {
PackageInfo packageInfo = packageList.get(i);
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
appNames.add(packageInfo.applicationInfo.loadLabel(getPackageManager()).toString());
}
}
adapter.notifyDataSetChanged();
loading = false;
}
}
答: 暂无答案
评论
RecyclerView
RecyclerView.OnScrollListener