Articles of android recyclerview

被选中状态覆盖的Android Ripple效果

在寻找一段时间之后,我无法find答案…… 我有一个带有物品的回收者视图,当选择这些物品时,它们具有红色背景和白色文本(事先背景为白色,文本为黑色)。 为此,我使用选择器。 我最近试图为此添加一个涟漪效果,但除非我长时间点击该项目,项目的背景将直接变为红色而没有波纹。 我假设这是因为选择器状态state_selected覆盖了sate_pressed上的纹波? 有谁知道有没有办法解决这个问题? 这是我使用的选择器代码: 提前致谢!

无法根据每个项目保存的长时间编写过滤掉RecyclerView中项目的算法

我在RecyclerView有几个项目,每个项目都保存了一个long值。 我正在使用FastAdapter作为我的RecyclerView的适配器。 假设RecyclerView有7个项目具有长值: -98811 , -88009 , -22113和-22113 。 所以, 我想要做的是,我想使用以下逻辑根据上面给出的long值过滤项目: if (l <= 1000) { // show items with long value 1000) { // show items with long value >1000 } 我尝试了各种各样的东西,但没有成功。 更新1 :此处的项目是存储在CardView中的一种不同数据,然后显示在RecyclerView 。 每张卡包含不同的数据,其中一个是上面给出的long值。 我想根据上面给出的逻辑,根据存储在每张卡中的这些long值来过滤数据。 请帮助我解决这个问题,并提出一些我可以实现此目的的算法或代码。

如何在recyclerview OnClick上打开不同的片段

我正在使用RecyclerView在我的Navigation Drawer显示我的抽屉列表项。 单击抽屉列表项,我可以打开不同的活动,但我希望能够打开将取代主要活动布局的片段。 有没有办法做到这一点? public class AdapterClass extends RecyclerView.Adapter { private LayoutInflater inflater; private Context context; List data = Collections.emptyList(); public AdapterClass(Context context, List data) { this.context = context; inflater = LayoutInflater.from(context); this.data = data; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = inflater.inflate(R.layout.custom_row, parent, false); MyViewHolder holder = new MyViewHolder(view); […]

GridLayoutManager中的不同(动态)项高度

我有一个带有2列的RecyclerView和GridLayoutManager。 如何在第一个屏幕截图上强制LayoutManager与模板一致? 现在我有第2个截图的结果。 需要结果: 目前的结果:

RecyclerView ambiguos setVisibility函数,单击一个视图会影响多个视图

这是我想要运行的项目 。 这是我的RecyclerView.Adapter类的onBindViewHolder代码 @Override public void onBindViewHolder(ViewHolder holder, final int position) { TextView title = (TextView) holder.view.findViewById(R.id.title); final TextView desc = (TextView) holder.view.findViewById(R.id.desc); final ImageView imageView = (ImageView) holder.view.findViewById(R.id.imageView); title.setText(pojos.get(position).getTitle()); desc.setText(pojos.get(position).getDesc()); imageView.setImageResource(pojos.get(position).getImage()); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { desc.setText(“clicked”); desc.setBackgroundColor(Color.BLUE); imageView.setImageResource(R.drawable.heart_red); } }); } 列表加载正常,问题发生在调用imageView的onclicklistener时。 desc.setText(“clicked”); 上面的行在单击它的列表项中进行更改。 但 desc.setBackgroundColor(Color.BLUE); 执行此行时,更改将反映在列表中的多个项目中。 出了什么问题? 在下面显示的图片中,我点击了第0项,文本变为“点击”并设置了颜色。 […]

ConstraintLayout中的android RecylerView不会滚动

我在约束布局中有一个recyclerView,我不能让它滚动,列表只在屏幕下方继续,没有滚动可能性。 如果我将布局转换为相对布局,滚动工作正常。 怎么才能让它滚动? 以下XML显示了我的布局,Recycler视图位于底部。 布局在屏幕顶部有一个图像和描述。 此屏幕设置占用屏幕的30%。 然后是一个分隔符和一个应该占用屏幕其余部分并且无法滚动的回收器视图

RecyclerView无法显示

我有一个不显示任何项目的RecyclerView。 最初它是空的,但后来我添加了项目并调用notifyDatasetChanged()。 getItemCount()被调用并返回25,onBindViewHolder被调用3次并正确设置视图。 public AlbumListAdapter(FacebookActivity activity, long pageId, OnItemClickListener listener){ this.listener = listener; this.inflater = LayoutInflater.from(activity); this.service = new PagedGraphService(String.format(“https://graph.facebook.com/%d/albums”, pageId), new PagedGraphService.ServiceUpdateListener() { @Override public void dataUpdated() { notifyDataSetChanged(); } @Override public void endReached() { } }, new TypeToken<PagedGraphService.GraphResponse>(){}.getType()); } @Override public AlbumHolder onCreateViewHolder(ViewGroup viewGroup, int i) { return new AlbumHolder(inflater.inflate(R.layout.photo_album_list_card, viewGroup, false)); } […]

导致此exception的原因java.lang.RuntimeException:java.lang.NoSuchMethodException:

我的firebase项目有问题。 我按照firebase GitHub文档中的步骤进行操作,但是我得到了这个例外 java.lang.RuntimeException: java.lang.NoSuchMethodException: [class android.view.View] 这是一个ViewHolder类,它不是内部类。 public class ProductViewHolder extends RecyclerView.ViewHolder{ public View mView; public ImageView img; public TextView title; public TextView price; public RatingBar stars; ProductViewHolder(View itemView) { super(itemView); mView = itemView; img = (ImageView) itemView.findViewById(R.id.productImg); title = (TextView) itemView.findViewById(R.id.txtTitle); price = (TextView) itemView.findViewById(R.id.txtPrice); stars = (RatingBar) itemView.findViewById(R.id.ratingBar); } } 这是与firebase相关的代码 @Override […]

检测单击项目外的RecyclerView

我有一个RecyclerView有2个项目没有填满整个屏幕。 如何检测用户点击RecyclerView的空白部分(意味着直接点击RecyclerView而不是其中一个项目)?

在RecycleView适配器中实现多个ViewHoldertypes

这可能是一个讨论而不是一个问题。 正常的方式来实现多种types 如您所知,如果我们想在RecyclerView实现多种types,我们应该提供多个CustomViewHolder扩展RecyclerView.ViewHolder 。 对于exmpale, class TextViewHolder extends RecyclerView.ViewHolder{ TextView textView; } class ImageViewHolder extends RecyclerView.ViewHolder{ ImageView imageView; } 然后我们必须覆盖onCreateViewHolder getItemViewType来构造TextViewHolder或ImageViewHolder 。 @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == 0) { return new ImageViewHolder(mLayoutInflater.inflate(R.layout.item_image, parent, false)); } else { return new TextViewHolder(mLayoutInflater.inflate(R.layout.item_text, parent, false)); } } 上面的代码是正常的,但还有另一种方法。 其他方式 我认为只有一个CustomViewHolder就足够了。 class MultipleViewHolder […]