
我尝试在添加一些数据后更新适配器,但没有更新,当我切换其他活动并回来时,适配器这次已更新了我的代码:
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适配器而不滚动到顶部所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)