Articles of android recyclerview

使用多种视图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 […]

在折叠工具栏布局上将RecyclerView固定在更高的位置

是否可以将RecyclerView锚定到比通常位置稍高的位置,就像大多数可折叠视图上的FAB图标一样(预期结果见图1)。 图1 我尝试了以下代码,但它没有给出预期的结果(参见图2了解当前结果) 图2 添加app:layout_behavior=”@string/appbar_scrolling_view_behavior”将回收器视图附加到可折叠视图,然后忽略添加边距底部。 但是删除它会产生预期的结果,但滚动视图不会按预期运行(没有视差效果),滚动后会滚动背景图像。 因此可以像第一张图像一样实现可折叠视图。

使用ReverseLayout recyclerview向Endless Scroll RecyclerView添加项目

在正常的Recyclerview中,最新的项目都在顶部,如果您将项目添加到recyclerview中,它会将现有项目向下推,新项目将位于最高位置。 在reverseLayout recyclerview中,最新的项目都在底部,如果您将项目添加到recyclerview中,则会在底部添加。 这种布局对于评论提要非常有用,您希望最新评论位于底部。 例如,当您评论朋友的状态时,Facebook评论供稿就是一个很好的例子。 您可以看到评论都有时间在底部发布,时间从上到下从12小时减少到10小时: reverseLayout很容易设置,我使用这段代码完成了它: mLayoutManager = new LinearLayoutManager(this); mLayoutManager.setReverseLayout(true); mLayoutManager.setStackFromEnd(true); 然而,我正在努力附加反向无限滚动监听器。 我在前面的问题中使用了以下Vilen的代码( 在底部使用ProgressBar向Endless Scroll RecyclerView添加项目 )并修改它,以便onLoadMoreListener只在向上滚动而不是向下时激活自身。 您想要向上滚动到较旧的评论: if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) { final LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); //if you add on addOnScrollListener, it will cause the scroll listener to be called twice each time you reset your adapter recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { […]

Recyclerview:收听填充点击事件

我有一个水平的RecyclerView其中leftPadding = 48dp , topPadding = 24dp , clipToPadding = false 。 它从左侧的空白区域开始,但是当用户滚动列表时,其项目将在该(先前为空)空间上绘制。 顶部空间始终为空。 此RecyclerView位于FrameLayout内,其foreground = selectableItemBackground 。 我的问题来自于RecyclerView消耗并忽略左侧和顶部空间的触摸,这意味着当连接到FrameLayout或RecyclerView时,不会触发OnClickListener 。 我已经在RecyclerView上尝试使用clickable = false和focusable = false ,但它不起作用。 我在找什么: 可滚动的RecyclerView 可点击的RecyclerView项目 单击RecyclerView’s空白空间时, FrameLayout单击事件 (替代3)可点击的RecyclerView’s空白区域 编辑:我创建了一个简单的项目,显示我正在谈论的问题: https : //github.com/dadino/recyclerviewemptyspacestest有2个提交,在第一个我试图抓住父视图的点击,在第二个我试图抓住RecyclerView本身的点击。 它们都不起作用。

RecycleView为项目设置了错误的高度

我为我搜索答案,但找不到工作答案。 在RecycleView中查看我的项目时出现了奇怪的错误: 我对RecycleView使用不同的视图。 我尝试使用此代码: mLayoutManager.setAutoMeasureEnabled(true); // false doesn’t work too 但它对我没有帮助。 UPD 1我忘记了这个,对不起。 当我启动应用程序时,我没有错误(像图像上的正常项目),但当我开始滚动我的RecycleView我遇到了问题) UPD 2我回到compile ‘com.android.support:recyclerview-v7:23.1.1’ ,但它没有帮助我(。所以我添加代码和xml与mey RecycleView ,我希望你帮助我。 XML: 和代码: mRecyclerView = (RecyclerView) parent.findViewById(R.id.dashboard_recycle_view); mLayoutManager = new LinearLayoutManager(getContext()); mLayoutManager.setAutoMeasureEnabled(false); mRecyclerView.setLayoutManager(mLayoutManager); mRecyclerView.setHasFixedSize(false); mRecyclerView.setAdapter(mRecycleAdapter);

动态添加视图到RecyclerView的项目

我想根据发送到RecyclerView.Adapter的ModalObject将额外的TextView添加到RecyclerView.Adapter的项目中。 示例 : 我有一个带有isAddTextvariables的模态对象。 在onCreateViewHolder中将创建Holder对象,并将itemView作为参数发送。 @Override public SolventViewHolders onCreateViewHolder(ViewGroup parent, int viewType) { View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.solvent_list, null); SolventViewHolders rcv = new SolventViewHolders(layoutView); return rcv; } SolventViewHolders.java public SolventViewHolders(View itemView) { super(itemView); itemView.setOnClickListener(this); textView = (TextView) itemView.findViewById(R.id.country_name); imageView = (ImageView) itemView.findViewById(R.id.country_photo); // Now i need add a view to the itemView parent based on ModalObject […]

具有空视图的FirebaseRecyclerAdapter

我知道有很多方法可以为RecyclerView提供空视图。 但我的问题是FirebaseRecyclerView。 我的布局是: 所以我在RecyclerView填充其项目之前显示正在加载ProgressBar。 现在如果服务器没有任何项目怎么办? 在这种情况下,我的RecyclerView始终为空,我的Loading ProgressBar始终对用户可见。 因此,我想要显示一些空的布局,而不是无限期地显示ProgressBar。 例如“找不到数据”或类似的消息。 最终结果应该是:ProgressBar应该显示,直到数据加载到RecyclerView,一旦数据加载,ProgressBar应该是不可见的。 但是如果服务器中没有数据,则应显示一些空布局而不是ProgressBar。 在普通的RecyclerView中,我们有一个数据集(某些ArrayList等),如果它是空的,那么我们可以显示那个空布局。 但是对于FirebaseRecyclerAdapter,我在我的Activity或Context中没有Snapshot的引用。 我也没有任何回调告诉我服务器中没有数据。 任何解决方法都会有很大帮助。

RecyclerView滞后滚动

我在RecyclerView中加载400×200图像,但在2k设备上滚动是滞后的。 我正在使用Picasso从资源加载图像。 正如您在演示图像中看到的那样,在2k屏幕上模糊,但如果我加载更高分辨率的图像,情况会变得更糟。 如何解决这个问题,我甚至没有加载大图像,它的400×200? 演示 这是我的代码card_view.xml Myadapter代码 public class CardAdapter extends RecyclerView.Adapter { private Context mContext; List list = new ArrayList(); public CardAdapter(Context mContext, List list) { this.mContext = mContext; this.list = list; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.card_view, parent, false); return new ViewHolder(itemView); } @Override public […]

Android – 网格中项目之间的RecyclerView间距

在我的Android应用程序中,我使用RecyclerView通过使用GridLayoutManager在网格中显示项目。 在GridView中,为了指定元素之间的间距,我将设置horizo​​ntalSpacing和verticalSpacing属性。 那么,我如何在RecyclerView上做同样的事情呢?

RecyclerView?android:attr / selectableItemBackground不适用于项目

我有这个items.xml 当我单独使用它时,selectableItemBackground在我单击视图时animation。 但是当我将它用于RecyclerView中的项目时,对点击的影响不再发生。 我怎样才能解决这个问题? PS:这是RecyclerView上的监听器,如果它是相关的: public ColorListOnItemTouchListener(Context context, OnItemClickListener clickListener) { mClickListener = clickListener; mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onDown(MotionEvent e) { return true; } @Override public void onLongPress(MotionEvent e) { if(childView != null && mClickListener != null) { mClickListener.onItemLongPress(childView, index); } } @Override public boolean onSingleTapUp(MotionEvent e) { if(childView […]