Articles of android recyclerview

带有进度指示器和animation的Android RecyclerView

在Material Design指南中,一次加载和显示所有内容的模式。 链接 如何使用RecyclerView来实现它?

滚动时的Android工具栏高程

我试图实现一个search栏像在谷歌地图android应用程序: 当回收站视图处于初始状态时,工具栏没有标高。 只有当用户开始滚动海拔变得可见。 而search栏(工具栏)永远不会崩溃。 这是我试图复制这个: <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" /> <android.support.design.widget.AppBarLayout android:id="@+id/appBarLayout" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="64dp"> <!– content –> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout> 在这里你可以看到结果: 所以我的解决scheme的问题是,工具栏的高程总是可见的。 但是,我希望它只在回收站视图在后面滚动时出现。 是否有任何devise支持库,使谷歌地图应用程序中看到这样的行为? 我在用 com.android.support:appcompat-v7:23.2.0 com.android.support:design:23.2.0

如何deviseGridView像监护人的应用程序

我正在尝试使布局像监护人的应用程序。 我知道什么是gridview,如何devise它,并用数据等来夸大它。 我想要devise什么? 这个布局有图像,而不是和,也有惰性加载进行。 我面临的问题是什么? 1 – 我应该跟哪个观点混淆。 GridView,ListView或RecyclerView。 2 – 如果我去与GridView然后如何有一些项目不同的项目布局。 我试过了什么? 我已经尝试使用线性布局作为单独的XML,然后我在运行时将xml添加到根布局。 它有点作用,但问题上升,当我需要添加clicklistener显示相关的职位,因为将有超过100多个职位数据。 如果有人指引我正确的话,那将是很多的帮助。 谢谢! 编辑。 经过这里的答案。 我用这种方法。 我习惯了xml。 然后,我用适配器中的getViewType来更改布局,但是不会给出这样的结果。 我仍然在寻找更有说服力的解决scheme。 这是我累了的代码。 public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder>{ MainDTO mainDTO; public RecyclerAdapter(MainDTO mainDTO){ this.mainDTO=mainDTO; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view; ViewHolder viewHolder; switch (viewType){ case 0: view= LayoutInflater.from(parent.getContext()).inflate(R.layout.header,parent,false); viewHolder=new […]

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

我正在使用RecyclerView在我的Navigation Drawer显示我的抽屉列表项目。 OnClick的抽屉列表项,我可以打开不同的活动,但是我希望能够打开将取代主要活动布局的碎片。 有没有办法做到这一点? public class AdapterClass extends RecyclerView.Adapter<AdapterClass.MyViewHolder> { private LayoutInflater inflater; private Context context; List<Information> data = Collections.emptyList(); public AdapterClass(Context context, List<Information> 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); […]

什么导致这个exceptionjava.lang.RuntimeException:java.lang.NoSuchMethodException:<init>

我的firebase项目出现问题 我遵循firebase GitHub文档上的步骤,但是我得到了这个exception java.lang.RuntimeException: java.lang.NoSuchMethodException: <init> [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相关的代码 […]

无法编写用于根据每个项目保存的长时间筛选出RecyclerView中的项目的algorithm

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

如何实现水平gridlayoutmanager

如何用recyclerview实现水平gridlayoutmanager。 固定行数。 和水平滚动。 喜欢这个… gridLayoutManager = new GridLayoutManager(getContext(), 1, GridLayoutManager.HORIZONTAL, false); recyclerView.setLayoutManager(gridLayoutManager); recyclerView.setHasFixedSize(true); 我尝试做这个。 但是这并没有显示任何项目。

带有RecyclerView的Android ViewPager在BottomSheet中不正确地工作

当我尝试滚动列表,有时这工作不正确 – BottomSheet截获滚动事件和隐藏。 如何重现这一点: 打开底部表单 更改ViewPager的页面 尝试滚动列表 结果:BottomSheet将被隐藏。 这里是示例代码: 编译'com.android.support:design:23.4.0' MainActivity.java package com.nkdroid.bottomsheetsample; import android.os.Bundle; import android.support.design.widget.BottomSheetBehavior; import android.support.design.widget.TabLayout; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private BottomSheetBehavior behavior; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); […]

为DividerItemDecoration设置drawable

DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL); dividerItemDecoration.setDrawable(getContext().getResources().getDrawable(R.drawable.sk_line_divider)); 大家好! 试图设置我的自定义绘制(线)为DividerItemDecoration,但没有成功。 错误在哪里? <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <stroke android:width="1dp" android:color="#000000"> </stroke> </shape>

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<Album>(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<Album>>(){}.getType()); } @Override public AlbumHolder onCreateViewHolder(ViewGroup viewGroup, int i) { return new AlbumHolder(inflater.inflate(R.layout.photo_album_list_card, viewGroup, false)); } […]