Articles of android recyclerview

删除最后一项时,Recyclerview崩溃。 NullPointerException:android.view.ViewGroup $ LayoutParams android.view.View.getLayoutParams()

我有一个recyclerview,使用arraylist填充。 当我从列表中删除项目时,它可以正常工作,直到最后一项被删除。 下面是我的recyclerview适配器中的代码,它删除了一个项目。 public void removeItem(int position) { itemsData.remove(position); notifyItemRemoved(position); } 下面是崩溃日志。 日志不会将我引导到我的代码中的指定位置。 所以我不确定是什么导致了这个问题。 我做了一些测试并记录了位置。 如果我在arraylist中添加一个项目并在recyclerview中添加了notifyItemInserted项目的位置,则为0.如果我点击添加的项目,则位置为0,如果我删除该项目,则将其从位置0移除,但是将项目移除为位置0时崩溃。 java.lang.NullPointerException:尝试在android.support.v7.widget.OrientationHelper $ 2.getDecoratedStart(OrientationHelper)上的空对象引用上调用虚拟方法’android.view.ViewGroup $ LayoutParams android.view.View.getLayoutParams()’。 java:316)at android.support.v7.widget.LinearLayoutManager.findOneVisibleChild(LinearLayoutManager.java:1633)at android.support.v7.widget.LinearLayoutManager.findFirstVisibleChildClosestToStart(LinearLayoutManager.java:1453)at android.support.v7.widget .LinearLayoutManager.computeScrollOffset(LinearLayoutManager.java:997)在android.support.v7.widget.LinearLayoutManager.computeVerticalScrollOffset(LinearLayoutManager.java:969)的android.support.v7.widget.RecyclerView.computeVerticalScrollOffset(RecyclerView.java:1175)at at android.view.View.canScrollVertically(View.java:12835)在android.support.v4.view.ViewCompatICS.canScrollVertically(ViewCompatICS.java:35)android.support.v4.view.ViewCompat $ ICSViewCompatImpl.canScrollVertically(ViewC) ompat.java:1136)在Android.support的android.support.v4.view.ViewCompat.canScrollVertically(ViewCompat.java:1528)android.support的android.support.v7.widget.RecyclerView $ LayoutManager.onInitializeAccessibilityEvent(RecyclerView.java:6594) .v7.widget.RecyclerView $ LayoutManager.onInitializeAccessibilityEvent(RecyclerView.java:6573)android.support.v7.widget.LinearLayoutManager.onInitializeAccessibilityEvent(LinearLayoutManager.java:204)at android.support.v7.widget.RecyclerViewAccessibilityDelegate.onInitializeAccessibilityEvent(RecyclerViewAccessibilityDelegate) .java:66)在android.support.Av.AccessibilityDelegateCompat $ AccessInDeitgateJellyBeanImpl $ 1.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:228)android.support.v4.view.AccessibilityDelegateCompatJellyBean $ 1.onInitializeAccessibilityEvent(AccessibilityDelegateCompatJellyBean.java:56)at android。在android.view.View.sendAccessibilityEventUncheckedInternal(V)中查看.View.onInitializeAccessibilityEvent(View.java:5439) iew.java:5312)在android.sview.View.View $ AccessibilityDelegate.sendAccessibilityEventUnchecked(View.java:20823)android.support.AccessibilityAleibilityCompatIcs.sendAccessibilityEventUnchecked(AccessibilityDelegateCompatIcs.java:117)at android.support.v4.view .AccessibilityDelegateCompat $ AccessibilityDelegateIcsImpl.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:210)at android.support.v4.view.AccessibilityDelegateCompat.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:358)at android.support.v4.view.AccessibilityDelegateCompat […]

notifyDataSetChanged()不刷新适配器

我的适配器列表在广播接收器上刷新。 如果适配器列表大小大于1,一切正常工作,意味着如果我的recyclerview已经有一行shwoing然后列表刷新就好了。 但是如果列表大小从0变为1,那么我的适配器通知数据集已更改停止工作。 在recyclerview上没有数据显示。 我不知道为什么它不起作用。 Recyclerview类: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { v = inflater.inflate(R.layout.job_recyclerview, container, false); getActivity()); initialise(v); init(); showNoTaskMessage(); new loadListTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); mMyBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // Here you can refresh your listview or other UI SlidingTab.slidingTab.getTabAt(0).setText(“New (” + SingleTon.getInstance().getNewjob() + […]

RecyclerView – 跳转到位置,然后平滑滚动到顶部

我有一个包含50多件物品的RecyclerView。 每个项目都包含一个图像(和文本)并填满大部分屏幕。 我调用recyclerView.smoothScrollToPosition(0) ,但animation需要3秒以上。 如果我调用recyclerView.scrollToPosition(10)然后再调用recyclerView.scrollToPosition(10) recyclerView.smoothScrollToPosition(0)则RecyclerView会从底部向上滚动到顶部(忽略“跳转”到位置10的请求)。 有没有办法在调用smoothScrollToPosition之前等待“跳转”?

Android 5.0(Lollipop)CheckedTextView按突出显示问题

在Android 5.0 Lollipop上运行时,我遇到了一个填充了CheckedTextViews的RecyclerView令人沮丧的问题。 Lollipop之前的所有版本都很好,并没有出现这个问题。 请查看下面的图片以便更好地理解: 预棒棒糖 棒糖 了解Lollipop如何仅在CheckedTextView的checkbox部分上绘制选择突出显示? Pre-Lollipop没有这个问题/ bug,并在视图的整个宽度上绘制选择突出显示(这是我想要的行为)。 这是我正在绘制到列表中的CheckedTextView: 有任何想法吗? 我尝试了一些不同的解决方案,例如android:focusable=”false” , android:duplicateParentState=”true” , android:duplicateParentState=”false” …… 多谢你们!

从底部添加animationRecyclerView添加

我正在使用最新的RecyclerView库来显示一个列表,其中包含一个选项,可以将项目添加到此列表中。 该列表的顺序相反,因此最新添加的内容显示在底部。 从顶部向回收站视图添加新项目时,会显示一个漂亮的animation,并自动滚动列表以显示最新项目。 但是,从底部添加新项目时,在animation新项目时,项目不会被类似地向上推。 这会导致奇怪的行为,即添加新项目并且除非用户滚动到列表底部,否则无法看到animation。 作为临时修复,我强制循环器视图适配器在添加新项目后滚动到第一个位置。 这不像从回收站视图顶部添加那样无缝,是否有适当的方法来实现它? 相应的代码如下: la.addItem(0, msg); layoutManager.scrollToPosition(0);

使用粘性标题,搜索function,按字母顺序选择器和可打开的项目/卡实现可扩展的Android Recycler视图?

这似乎是一个非常具体的问题,但它实际上与现实世界的应用程序相关。 通常,对于应用程序的要求需要ListView或者为了将来certificate具有以下内容的RecyclerView : StickyHeaders Searchfunction Alphabetical SectionIndexer快速滚动 Swipable物品,用于额外function 扩展 因此,有一些库可以在列表上执行单个任务: StickyHeadersRecyclerView StickHeadersListView SwipeableListView SectionIndexerFastScroll 但是,这些库不能很好地协同工作,并且通常不能相互扩展。 有没有想法如何将所有这些类的function集中在一起?

是否有与RecyclerView相同的addHeaderView?

我正在为回收者视图寻找相当于addHeaderView的东西。 基本上我想要一个带有2个按钮的图像作为标题添加到列表视图中。 是否有不同的方法将标题视图添加到回收站视图? 指导的一个例子会很有帮助 编辑2(添加片段布局): 添加日志语句后,似乎getViewType只接收到0的位置。这导致onCreateView只加载一个布局: 10-26 16:32:53.766 5449-5449/co.testapp I/logger info﹕ Adapter-> getItemCount: 5 10-26 16:32:53.766 5449-5449/co.testapp I/logger info﹕ Adapter-> getItemCount: 5 10-26 16:32:53.766 5449-5449/co.testapp I/logger info﹕ Adapter-> getItemCount: 5 10-26 16:32:53.766 5449-5449/co.testapp I/logger info﹕ Adapter-> getItemCount: 5 10-26 16:32:53.766 5449-5449/co.testapp I/logger info﹕ Adapter-> getItemCount: 5 10-26 16:32:53.766 5449-5449/co.testapp I/logger info﹕ Adapter-> getItemCount: 5 10-26 […]

最好的地方叫RecyclerView.Adapter.notifyItem *?

使用CursorLoader更新ListView是一种从数据库向UI显示数据的简单方法。 模型修改传播到UI而没有额外的工作,也许效率不高。 RecyclerView.adapter提供更多粒度的访问权限,允许例如指定删除特定项目的适配器。 但是,调用那些首选方法(notifyItem *),替换notifyDataSetChanged的最佳位置是什么? 显然,适配器不能观察contentProvider,否则它将不知道模型修改的性质(就像之前一样)。 可以使用不同的模式,例如添加总线以发布来自提供者的修改,创建单个模型,该模型将保持对适配器的引用,可能使用演示者(在L中引入)或创建活动绑定服务。 这是一个常见的用例:同步进程在DB中插入一个条目(或者收到gcm通知,也在DB中插入一个条目),然后我想通过调用notifyItemInserted来更新UI(如果已启动)。 在哪里拨打这个电话? 谢谢。

带有wrap_content的RecyclerView没有很好的animation效果

当我将RecyclerView高度作为wrap_content ,如下所示 结果如下。 这是因为resize发生在animation之前。 它在https://medium.com/@elye.project/recyclerview-supported-wrap-content-not-quite-f04a942ce624#.n7xivnrdr中有更清楚的描述。 有没有办法强制它先animation然后只resize?

在Recyclerview中删除页脚后的分隔符

是否有任何方法在Recyclerview的页脚后删除分隔符。我正在使用项目装饰将分隔符添加到适配器。我在适配器中添加页脚.divider也显示在页脚下方。我想删除它。 这是我的Divider代码 public class DividerItemDecoration extends RecyclerView.ItemDecoration { private static final int[] ATTRS = new int[]{ android.R.attr.listDivider }; public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL; public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL; private Drawable mDivider; private int mOrientation; public DividerItemDecoration(Context context, int orientation) { final TypedArray a = context.obtainStyledAttributes(ATTRS); mDivider = a.getDrawable(0); a.recycle(); setOrientation(orientation); } […]