java-更新recyclerView适配器而不滚动到顶部

java-更新recyclerView适配器而不滚动到顶部,第1张

概述我尝试在添加一些数据后更新适配器,但没有更新,当我切换其他活动并回来时,适配器这次已更新了我的代码:voidupdateAdapter(){adapter.setData(getData());adapter.notifyDataSetChanged();Log.d("TAG","DATASIZEAFTERUPDATE:"+getData().size()+"item

我尝试在添加一些数据后更新适配器,但没有更新,当我切换其他活动并回来时,适配器这次已更新了我的代码:

    voID updateAdapter(){    adapter.setData(getData());    adapter.notifyDataSetChanged();    Log.d("TAG"," DATA SIZE AFTER UPDATE : "+getData().size() +" items : "+adapter.getItemCount());}

我的适配器:

    private voID createAdapter(final RecyclerVIEw recyclerVIEw , final List<information> data) {    List<information> content = new ArrayList<>();    Log.d("TAG","createAdapter Called");    final int[] currentRowposition = {0};    content = data;    final List<information> finalContent = content;     adapter = new ParallaxRecyclerAdapter<information>(finalContent) {/// my onBindVIEwHolder        @OverrIDe        public voID onBindVIEwHolderImpl(final RecyclerVIEw.VIEwHolder vIEwHolder, final ParallaxRecyclerAdapter<information> adapter, final int i) {            currentRowposition[0] = i;            if ( i <= finalContent.size() -1 ){                ((VIEwHolder) vIEwHolder).linearLayout.setVisibility(VIEw.GONE);            final information current = finalContent.get(i);            ((VIEwHolder) vIEwHolder).DESCRIPTION.setText(current.description);        }else {                 // this is my loadMore button which stays at the last row of recyclerVIEw                 ((VIEwHolder) vIEwHolder).setIsRecyclable(false);                ((VIEwHolder) vIEwHolder).linearLayout.setVisibility(VIEw.VISIBLE);                ((VIEwHolder) vIEwHolder).itemVIEw.getLayoutParams().height = 100;                ((VIEwHolder) vIEwHolder).LOADMORE.setonClickListener(new VIEw.OnClickListener() {                    @OverrIDe                    public voID onClick(VIEw v) {                        fetchNext();                    }                });            }        }//my on create VIEw Holder        @OverrIDe        public RecyclerVIEw.VIEwHolder onCreateVIEwHolderImpl(VIEwGroup vIEwGroup, final ParallaxRecyclerAdapter<information> adapter, int i) {            return  new VIEwHolder(getActivity().getLayoutInflater().inflate(R.layout.custom_row, vIEwGroup, false));        }        @OverrIDe        public int getItemCountImpl(ParallaxRecyclerAdapter<information> adapter) {            return finalContent.size()+1;        }    });// adding header to recyclerVIEw      recyclerVIEw.setLayoutManager(new linearlayoutmanager(getContext()));    VIEw header = getActivity().getLayoutInflater().inflate(R.layout.header, recyclerVIEw, false);    headerImageVIEw =  (ImageVIEw) header.findVIEwByID(R.ID.headerImageVIEw);    //setting CoverImage    adapter.setParallaxheader(header, recyclerVIEw);    adapter.setData(content);    recyclerVIEw.setAdapter(adapter);}

任何想法我如何在RecyclerVIEw上实时更新添加新项目?任何指导都会对我有帮助

解决方法:

我假设当您第一次运行Activity(具有RecyclerVIEw)时,它将正确地从适配器加载所有内容.

但是,当您更改为其他活动时,会更改适配器的项目,然后返回到其中包含RecyclerVIEw的Activity,因为适配器未更新,因此无法获取正确的更新信息.

这可能是因为您的活动在onResume()中恢复时没有刷新适配器,类似这样.您可能需要根据需要对onResume方法进行其他更改,

onResume(){  if(adapter != null){     adapter.notifyDataSetChanged();   }}

请检查活动的生命周期

例:
这不会直接解决您的问题,但是可以帮助您理解,当您重新开始活动时应该刷新适配器.

有一个NoteListActivity,其中带有ListVIEw,您可以在NoteEditActivity中向其中的适配器添加或编辑项,一旦回来,就必须在具有列表视图的活动中刷新适配器

总结

以上是内存溢出为你收集整理的java-更新recyclerView适配器而不滚动顶部全部内容,希望文章能够帮你解决java-更新recyclerView适配器而不滚动到顶部所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1090684.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存