如何重新加载从线程加载数据的recycleview

在我的 android 应用程序中,我有recyclerView一个fragment. 因此,recyclerView运营商会提供有关已安装应用程序的详细信息。我正在使用 acustomAdapter并使用线程将数据加载到 ,recyclerView因为如果不是 UI 挂起。我正在使用 swipetoReload 控件。我可以通过重新启动我使用的线程来重新加载 recylerView。但随后recyclerView消失并立即再次出现。


我在这里做错了吗?有没有办法避免这种情况。或者有没有更好的方法可以在没有线程或类似的东西的情况下做到这一点。这是我的代码。


片段:


Thread loadApps = new Thread() {

            @Override

            public void run() {


                swipeapplist.post(new Runnable() {

                    @Override

                    public void run() {

                        if (!swipeapplist.isRefreshing()) {

                            swipeapplist.setRefreshing(true);

                        }

                    }

                });


                appAdapter = new AppAdapter(context, getInstalledApps());

                final LinearLayoutManager layoutManager = new LinearLayoutManager(context);

                recyclerInstalledApps.post(new Runnable() {

                    @Override

                    public void run() {

                        recyclerInstalledApps.setLayoutManager(layoutManager);

                        LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(context, R.anim.recycler_layout_animation);


                        recyclerInstalledApps.setLayoutAnimation(controller);

                        recyclerInstalledApps.scheduleLayoutAnimation();

                        recyclerInstalledApps.setAdapter(appAdapter);

                    }

                });


                swipeapplist.post(new Runnable() {

                    @Override

                    public void run() {

                        if (swipeapplist.isRefreshing()) {

                            swipeapplist.setRefreshing(false);

                        }

                    }

                });

            }

        };

        loadApps.start();


慕田峪4524236
浏览 156回答 1
1回答

FFIVE

尝试使用 notifyDataSetChanged     appAdapter = new AppAdapter(context, getInstalledApps());            final LinearLayoutManager layoutManager = new LinearLayoutManager(context);            recyclerInstalledApps.post(new Runnable() {                @Override                public void run() {                    recyclerInstalledApps.setLayoutManager(layoutManager);                    LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(context, R.anim.recycler_layout_animation);                    recyclerInstalledApps.setLayoutAnimation(controller);                    recyclerInstalledApps.scheduleLayoutAnimation();                    recyclerInstalledApps.setAdapter(appAdapter);                }            });   appAdapter.notifyDataSetChanged();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java