Articles of recycler adapter

RecyclerView在聊天屏幕中的notifyDataSetChanged上滚动到顶部

我正在尝试使用recyclelerView创建消息types的屏幕,它将从底部开始,并在用户达到聊天的最高点时加载更多数据。 但我正面临着这个奇怪的问题。 我的recyclerView在调用notifyDataSetChanged时滚动到顶部。 由于这个onLoadMore被多次调用。 这是我的代码: LinearLayoutManager llm = new LinearLayoutManager(context); llm.setOrientation(LinearLayoutManager.VERTICAL); llm.setStackFromEnd(true); recyclerView.setLayoutManager(llm); **在适配器中 @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (messages.size() > 8 && position == 0 && null != mLoadMoreCallbacks) { mLoadMoreCallbacks.onLoadMore(); } **在活动中 @Override public void onLoadMore() { // Get data from database and add into arrayList chatMessagesAdapter.notifyDataSetChanged(); } 这只是recyclerView滚动到顶部。 […]

使用Android LiveData更新RecyclerView

有许多示例如何在LiveData更改时将新列表推送到适配器。 我正在尝试在巨大的列表中更新一行(例如,post的评论数量)。 将整个列表重置为仅更改一个字段将是愚蠢的。 我能够添加观察者onBindViewHolder,但我无法理解何时应该删除观察者 @Override public void onBindViewHolder(ViewHolder vh, int position) { Post post = getPost(position); vh.itemView.setTag(post); post.getLiveName().observeForever(vh.nameObserver); … }

如何正确设置高程值到recyclerview?

我正在使用android中的recyclelerview进行网格布局。 网格占据屏幕的一部分并具有阴影。 为了获得所需的阴影效果,我使用的是12 dp的高程值。 但它似乎不起作用,因为我看不到网格的任何高程(阴影)。 为什么会这样? recyclerview不支持提升吗? ……

Recyclerview项目点击涟漪效应

我正在尝试将Ripple Effect添加到RecyclerView的项目中。 我在网上看了一下,但找不到我需要的东西。 我已经尝试了android:background属性到RecyclerView本身并将其设置为”?android:selectableItemBackground”但它没有工作: 我的父布局是这样的 和适配器模板如下所示 请给我解决方案

皮棉错误“不要将位置视为固定; 只能立即使用…“

我正在为开源库做贡献并得到lint错误“不要将位置视为已修复;只能立即使用并调用holder.getAdapterPosition()以便稍后查找”以获取此代码: @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { mAdapter.onBindViewHolder(holder, position); if (!isFirstOnly || position > mLastPosition) { for (Animator anim : getAnimators(holder.itemView)) { anim.setDuration(mDuration).start(); anim.setInterpolator(mInterpolator); } mLastPosition = position; } else { ViewHelper.clear(holder.itemView); } } 我已经检查过这是因为保存位置以备将来使用。 图书馆创建者为什么需要这种逻辑是一个问题。 但是当我将位置的使用holder.getAdapterPosition()为使用holder.getAdapterPosition()时,问题就消失了: @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { mAdapter.onBindViewHolder(holder, position); if (!isFirstOnly || holder.getAdapterPosition() > mLastPosition) […]

是否有任何Observers在RecyclerView.Adapter中写入以了解数据集是否已更改?

我已经使用它的Custom Adapter实现了我的RecyclerView ,如下所示 全球宣言如下 private LinearLayoutManager linearLayoutManager; private int pastVisibleItems, visibleItemCount, totalItemCount; private CustomRecyclerViewAdapter customRecyclerViewAdapter; 首先,我在onCreate()方法中创建了Adapter Instance,其中包含Empty Array并将其设置为recyclerView linearLayoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(linearLayoutManager); DividerItemDecoration dividerItemDecoration = new DividerItemDecoration( Utility.ItemDecorationConst); recyclerView.addItemDecoration(dividerItemDecoration); customRecyclerViewAdapter = new CustomRecyclerViewAdapter(getActivity()); recyclerView.setAdapter(customRecyclerViewAdapter); recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { visibleItemCount = linearLayoutManager.getChildCount(); totalItemCount = linearLayoutManager.getItemCount(); pastVisibleItems […]

当使用Runnable从Handler使用notifyItemChanged时,RecyclerView会崩溃

我使用RecyclerView作为列表来显示可以下载的歌曲。 每个项目的View都有ProgressBar 。 下载开始时,我使用Handler通知每个项目更新ProgressBar以显示歌曲下载进度。 Q1。 这是一种正确的方法,还是有其他方法可以更恰当地做到这一点。 Q2。 当我们使用adapter.notifyItemChanged(position);时,RecyclerView会崩溃adapter.notifyItemChanged(position); 更新单个项目的内容。 它是使用Runnable从Handler调用的。 但是,日志不会显示我的代码的任何痕迹。 为什么? 以下是此问题的日志: 05-06 19:09:45.804: E/AndroidRuntime(32115): FATAL EXCEPTION: main 05-06 19:09:45.804: E/AndroidRuntime(32115): java.lang.IllegalArgumentException: Tmp detached view should be removed from RecyclerView before it can be recycled: ViewHolder{41b7bec0 position=6 id=-1, oldPos=-1, pLpos:-1 update changed tmpDetachedundefined adapter position no parent} 05-06 19:09:45.804: E/AndroidRuntime(32115): at android.support.v7.widget.RecyclerView$Recycler.recycleViewHolderInternal(RecyclerView.java:3861) 05-06 19:09:45.804: […]

使用多种视图types在recyclerview中滚动到底部

我有一个包含多个项目的recyclerview。 和recyclerview有不同的视图types和不同的高度.. 所以这些是我尝试过的 recyclerview.scrollToPosition(adapterWrapper.getAdapter().getItemCount()-1); 和 app:layoutManager=”LinearLayoutManager” app:stackFromEnd=”true” 当我仅在单一视图types上应用它们时,它们对我很有用。但在多视图types中。 它不是滚动到底部。 它被困在底部之前的9个项目。 我stackFromBottom在listview中使用stackFromBottom并且工作正常.. 那么在recyclerview中它的解决方案是什么? 它实际上是一个聊天应用程序,具有不同types的布局,包括图像,GIF等。 RecyclerAdapter代码, package com.buckydroid.anonchat.Adapters; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.webkit.URLUtil; import android.widget.ImageView; import android.widget.PopupMenu; import android.widget.TextView; import android.widget.Toast; import com.buckydroid.anonchat.Async.DownloadManager; import com.buckydroid.anonchat.Chatroom.ChatRoom; import com.buckydroid.anonchat.Pages.FullScreenImageView; import com.buckydroid.anonchat.Pages.Profile; import […]

如何在android中的RecyclerView项目之间添加动态视图?

我需要在RecyclerView的项目之间添加一个小条带。 此条带可以在列表中的不同数量的项目之后。 这需要动态完成。 我需要实现FitBit所做的事情: 我还需要第一行,即即使页面向下滚动,也可以将“本周”放在顶部。

RecyclerView StaggeredGridLayoutManager重新排序问题

我试图在带有两列的StaggeredGridLayoutManager的RecyclerView显示三个(至少我遇到问题)。 第一项跨越两行。 这是它的样子: 现在,我将项目“项目2”移到顶部。 这是我在适配器中调用的代码(这是我编写的一个示例,用于演示我在一个更复杂的项目中遇到的问题): private int findById(int id) { for (int i = 0; i < items.size(); ++i) { if (items.get(i).title.equals("Item " + id)) { return i; } } return -1; } // Moving the item "Item 2" with id = 2 and position = 0 public void moveItem(int id, int position) { final […]