“隐藏” RecyclerView中的项目。删除项目,但允许用户将其带回。用户必须能够将所有移除的物品带回来。对此可以采取不同的方法。
上面的链接是列表的屏幕截图。我希望能够从列表中隐藏一个项目(如上图所示),但仍然允许用户将所有隐藏的项目带回到列表中。
用于填充列表的代码。
//Method used to retrieve all installed applications
private ArrayList<AppData> getInstalledPackages() {
List<String> appsList = new ArrayList<>();
ArrayList<AppData> appDataArrayList = new ArrayList<AppData>();
AppInfoExtractor apkInfoExtractor = new AppInfoExtractor(this);
appsList = apkInfoExtractor.GetAllInstalledApkInfo();
if (appsList != null && appsList.size() > 0) {
for (int i = 0; i < appsList.size(); i++) {
AppData appData = new AppData();
appData.setAppName(apkInfoExtractor.GetAppName(appsList.get(i)));
appData.setPackageName(appsList.get(i));
Version version = new Version();
version.setVersionName(apkInfoExtractor.getVersionName(appsList.get(i)));
version.setVersionCode(apkInfoExtractor.getAppVersionCode(appsList.get(i)));
List<String> grantedPermissions = getPermissionsForPackage(appsList.get(i));
List<String> grantedPermissionsShort = getShortPermissionStrings(grantedPermissions);
version.setPermissions(grantedPermissionsShort);
ArrayList<Version> versions = new ArrayList<Version>();
versions.add(version);
appData.setVersions(versions);
appDataArrayList.add(appData);
}
}
return appDataArrayList;
}
列表适配器的代码。
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
AppInfoExtractor apkInfoExtractor = new AppInfoExtractor(context1);
final String ApplicationPackageName = (String) stringList.get(position);
final String ApplicationLabelName = apkInfoExtractor.GetAppName(ApplicationPackageName);
Drawable drawable = apkInfoExtractor.getAppIconByPackageName(ApplicationPackageName);
viewHolder.textView_App_Name.setText(ApplicationLabelName);
viewHolder.textView_App_Package_Name.setText(ApplicationPackageName);
viewHolder.tv_version_name.setText("Version Name: " + apkInfoExtractor.getVersionName(ApplicationPackageName));
viewHolder.tv_version_code.setText("Version Code: " + apkInfoExtractor.getAppVersionCode(ApplicationPackageName));
viewHolder.imageView.setImageDrawable(drawable);
//Adding click listener on CardView to open clicked application directly from here .
viewHolder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent perm = new Intent(context1, AppDetailActivity.class);
perm.putExtra("PACKAGE_NAME", ApplicationPackageName);
perm.putExtra("APP_NAME", ApplicationLabelName);
context1.startActivity(perm);
}
});
}
答案 0 :(得分:0)
请参考Recyclerview Swipe to remove从recyclerView
中删除项目。
要取消隐藏所有项目,请添加带有“取消全部隐藏”选项的菜单选项。
在列表中滑动时存储所有已删除的数据,并在选择“全部取消隐藏”菜单选项后将其附加到recyclerView
数据中。
希望有帮助。
答案 1 :(得分:0)
您可以使用ItemTouchHelper对RecyclerView中的项目执行“滑动删除”功能。删除项目后,显示带有“撤消”操作的小吃店。单击“撤消”时,再次将项目添加回列表中。 请检查here,并让我知道这是否适合您。
答案 2 :(得分:0)
您可以简单地创建另一个列表来保存隐藏的项目,因此,当用户从主列表中隐藏项目时,它会从主列表中删除并添加到隐藏的项目列表中。并取消隐藏按钮以将其带回到主列表并将其从隐藏列表中删除。