android – RecyclerView.getChild(index)在列表滚动时显示为空(索引被搞砸了)

android – RecyclerView.getChild(index)在列表滚动时显示为空(索引被搞砸了),第1张

概述我一直在为我的 Android应用程序使用SwipeableRecyclerView为我的recyclelerView启用滑动. RecyclerView包含cardViews列表. 我正在尝试为卡片执行撤消功能,当刷卡左边时会被删除(第一次滑动显示撤消,下一个滑动触发器删除) 我正在尝试以下代码(部分工作我猜) SwipeableRecyclerViewTouchListener srvTouc 我一直在为我的 Android应用程序使用SwipeableRecyclerVIEw为我的recyclelerVIEw启用滑动. RecyclerVIEw包含cardVIEws列表.

我正在尝试为卡片执行撤消功能,当刷卡左边时会被删除(第一次滑动显示撤消,下一个滑动触发器删除)

我正在尝试以下代码(部分工作我猜)

SwipeableRecyclerVIEwtouchListener srvtouchListner = new SwipeableRecyclerVIEwtouchListener(rvTimerList,new SwipeableRecyclerVIEwtouchListener.SwipeListener(){                @OverrIDe                public boolean canSwipe(int i) {                    return true;                }                @OverrIDe                public voID ondismissedBySwipeleft(RecyclerVIEw recyclerVIEw,int[] ints) {                    for(int position : ints){                        VIEw vIEw = recyclerVIEw.getChildAt(position);                            if (vIEw.getTag(R.string.card_undo) == null) {                                if(vIEwStack == null) {                                    savetoVIEwStack(position,vIEw);                                    final VIEwGroup vIEwGroup = (VIEwGroup) vIEw.findVIEwByID(R.ID.time_card2);                                    vIEw.setTag(R.string.card_undo,"true");                                    vIEwGroup.addVIEw(vIEw.inflate(TimerSummary.this,R.layout.timeslot_card_undo,null));                                }                            } else {                                Log.d(TAG,"Removing Item");                                deleteTimeSlot(timerInstanceList.get(position));                                Toast.makeText(TimerSummary.this,"Deleted!",Toast.LENGTH_SHORT).show();                                timerInstanceList.remove(position);                                finalSummaryAdapter.notifyItemRemoved(position);                            }                    }                    finalSummaryAdapter.notifyDataSetChanged();                }                @OverrIDe                public voID ondismissedBySwipeRight(RecyclerVIEw recyclerVIEw,int[] ints) {                    for (int position:ints){                        VIEw vIEw = recyclerVIEw.getChildAt(position);                        if(vIEw.getTag(R.string.card_undo) != null && vIEw.getTag(R.string.card_undo).equals("true")){                            vIEwStack = null;                            recyclerVIEw.setAdapter(finalSummaryAdapter);                        }                    }                }            });

当项目更多(需要滚动)

VIEw vIEw = recyclerVIEw.getChildAt(position);

返回引用应用程序崩溃的空引用.

我怀疑我使用错误的方法来观察.我应该使用与观众有关的东西,实际上我对于如何从观众获取你想要的视图感到困惑.

如果任何人可以分享任何有助于,那将是伟大的!
如果有人想要,我会很乐意提供更多的信息,

解决方法 你应该使用findVIEwHolderForAdapterposition.
https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html#findViewHolderForAdapterPosition(int)

请记住,如果位置未布局(例如超出或移除),它将返回null.

总结

以上是内存溢出为你收集整理的android – RecyclerView.getChild(index)在列表滚动时显示为空(索引被搞砸了)全部内容,希望文章能够帮你解决android – RecyclerView.getChild(index)在列表滚动时显示为空(索引被搞砸了)所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1132023.html

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

发表评论

登录后才能评论

评论列表(0条)

保存