首页 > 解决方案 > 更改数据后更新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();
        }
}

标签: androidandroid-recyclerview

解决方案


appList删除通知您的适配器后,您应该从中删除卸载应用程序。

notifyDataSetChanged如果您传递给适配器的列表中有任何更改,将影响您的列表。


推荐阅读