Articles of android recyclerview

使用带有StaggeredGridLayoutManager的RecyclerView时,如何避免项目之间的双重空间?

我正在使用带有StaggeredGridLayoutManager的RecyclerView来创建一个两列列表。 但是如何在左列和右列之间设置右边距。 我已经使用此代码从顶部创建右边距,但如何解决列之间的双倍空格。 public class SpacesItemDecoration extends RecyclerView.ItemDecoration { private int space; public SpacesItemDecoration(int space) { this.space = space; } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { outRect.left = space; outRect.right = space; outRect.bottom = space; // Add top margin only for the first or second item to avoid double […]

如何让回收者视图开始从中心添加项目?

我有一个带有“Horziontal Linear Layout”的recyclerView作为布局管理器。 Recycler View采用框架布局,layout_gravity =“center”,layout_width =“wrap_content” 我希望回收站视图开始从中心添加项目。 这就是我想要的: 这就是我得到的: 您可以看到在最后一个图像中,项目是从左侧添加的。 我想让它从中心添加项目,如前三张图片所示。

Recyclerview视图不能与setNestedScrollingEnabled一起使用,它也永远不会回收任何视图

我面临两个问题: 滚动侦听器将无法工作 当RecyclerView附加到NestedScrollView时,它永远不会回收任何视图。 它就像ScrollView中的线性布局。 它使用大量内存并造成滞后。 我在回收器视图的顶部附加了一个youtube播放器片段,因为我无法在回收器视图中放置片段。 在我的代码中,您可以看到有一个框架布局。 我的布局看起来像这样: 我想使用滚动侦听器来加载更多项目,所以我尝试了以下内容: @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { Log.i(TAG, “onScrolled: “); // bail out if scrolling upward or already loading data if (dy < 0 || dataLoading.isDataLoading()) return; final int visibleItemCount = recyclerView.getChildCount(); final int totalItemCount = layoutManager.getItemCount(); final int firstVisibleItem = layoutManager.findFirstVisibleItemPosition(); if […]

使用多种视图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的引用。 我也没有任何回调告诉我服务器中没有数据。 任何解决方法都会有很大帮助。