android - 更改数据后更新recyclerView
问题描述
我有一个自定义回收器适配器类,并且已将已安装的应用程序从设备设置为 recyclerView。我有一个卸载按钮,按下该按钮可从 recyclerView 卸载选定的应用程序。我的问题是每当卸载完成时,onActivityResult 我已经将 notifyDatasetChanged 方法设置为 recyclerAdapter,但卸载的应用程序仍然存在于 recyclerView 中。
appList = getInstalledApps();
mAdapter = new CardViewDataAdapter(appList);
mRecyclerView.setAdapter(mAdapter);
btnSelection.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < appList.size(); i++) {
AllApps singleApp= appList.get(i);
if (singleApp.isSelected() == true) {
String app_pkg_name = singleApp.getPackageName();
Intent intent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE);
intent.setData(Uri.parse("package:" + app_pkg_name));
intent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
startActivityForResult(intent, UNINSTALL_REQUEST_CODE);
}
}
}
});
而 onActivityResult 我已经这样做了:
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==UNINSTALL_REQUEST_CODE && resultCode == RESULT_OK ){
mAdapter.notifyDataSetChanged();
Toast.makeText(MainActivity.this, "RecyclerView Updated!!",
Toast.LENGTH_LONG).show();
}
}
解决方案
appList
删除通知您的适配器后,您应该从中删除卸载应用程序。
notifyDataSetChanged
如果您传递给适配器的列表中有任何更改,将影响您的列表。
推荐阅读
- web-services - SAP 中的 Web 服务是否默认可用?
- javascript - 重新排序不适用于新追加
- python - 我在抓取时产生数据,我需要在 orderde 字段中的 csv 文件中抓取数据
- android - 当我们在同一设备的单个应用程序中使用不同帐户时的 SQLite DB 问题
- linux - linux 中的 IE11 webdriver 是否支持硒测试?
- python - 使用数据框列值作为列名
- javascript - 在 echo 语句中连接 javascript 字符串和变量
- c# - 首次执行完成后,Topshelf 服务未自动运行
- python - 这个正则表达式的正确术语是什么?
- ionic-framework - 为什么 ionic APK for android 在 build/outputs/apki/debug/ 文件夹下生成并且它没有在设备中打开?