Articles of android recyclerview

如何在Gridlayout中制作更大的第一张图片?

确切地说,我想实现这一目标。 我正在使用recyclerview和GridLayoutManager。 我还使用以下代码将第一项设置为大 lLayout.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int i) { if (i==0) return 2; else return 1; } }); 一切正常,除了一个:位置1处的项目(即大图像中的下一个项目)垂直拉长以匹配大项目的高度。 从第3行开始,所有图像都如图所示。 我怎么能摆脱这个? 编辑:经过一番分析 所以问题似乎是大图像水平地采用两个跨度但垂直单跨,因为我强制我的ImageView是方形的,看起来它也采取了两行,实际上它是一行。 由于这个原因,第二个图像看起来很长。 所以现在我的问题是,如何使网格项垂直两个跨度和两个水平跨度?

按日期对回收商查看项目进行分组?

我需要根据日期对回收者视图数据进行分组,并在每个组之间显示一些分隔符,如下所示。 – 项目#1– – 项目#2– — January 2016(Divider)– – 项目#3– – 项目#4– – 项目#5– — December 2015(Divider)– – 项目#6– – 项目#7– …. …. 我怎么能做到这一点?

由于Admob广告,Recyclerview滞后于滚动

我想在RecyclerView中加载广告广告已成功加载,但在滚动时会出现这么多延迟 以下是我在Adapter的OnBindViewHolder方法中编写的代码 如何解决这个滞后? ((DealHolder) holder).adcardView.post(new Runnable() { @Override public void run() { final NativeExpressAdView adView = new NativeExpressAdView(((DealHolder) holder).itemView.getContext()); final int adWidth = ((DealHolder) holder).adcardView.getWidth() – ((DealHolder) holder).adcardView.getPaddingLeft() – ((DealHolder) holder).adcardView.getPaddingRight(); final int adHeight = ((DealHolder) holder).adcardView.getHeight() – ((DealHolder) holder).adcardView.getPaddingBottom() – ((DealHolder) holder).adcardView.getPaddingTop(); final float scale = ((DealHolder) holder).adcardView.getResources().getDisplayMetrics().density; AdSize adSize = new AdSize((int) (adWidth […]

在recyclerview中的notifydatachanged期间保持涟漪效应

我开始修改我的应用程序以支持棒棒糖。 基本上,我有一个带有recyclerview的文件浏览器片段,当用户打开这个片段时,他会看到他的根目录下的所有文件夹,当用户点击我需要获取所有子文件夹+文件的文件夹并将它们显示给用户使用与noifydatachanged相同的recyclerview。 function正常的问题是当用户单击文件夹时,在notifydatachanged期间不保留涟漪效应。 file_item.xml Recyclerview适配器: public class RecycleAdapter extends RecyclerView.Adapter{ private List _data; private Context _context; private IFileListener _listener; public RecycleAdapter(Context context, List data,IFileListener listener) { _data = data; _context = context; _listener = listener; } public void setData(List data) { _data = data; notifyDataSetChanged(); } @Override public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View […]

RecyclerView的animation人口

我有一个带有CardView集合的CardView 。 我的代码基本上是这篇官方文章的代码,并且工作正常,因此无需在此处发布我的代码。 在那里。 它看起来如下: +——————————+ | +————+ +————+ | | | card 1 | | | | | +————+ +————+ | | +————+ +————+ | | | | | | | | +————+ +————+ | | +————+ +————+ | | | | | | | | +————+ +————+ | | +————+ +————+ | | […]

如何防止RecyclerView单元的子项在用户滚动时移动

我的水平 RecyclerView上有很长的单元格,我希望它们有一个在用户水平滚动时保持静止的标题。 – Recycler View (A) – – Cell (parent) (B) – – – Header (C) <– We want that to be still – – – Content (D) 这是它在视觉上的样子: 因此,我正在寻找一种方法: 1)当用户在RecyclerView (A)上拖动手指时,停止标题 (C)更改位置 要么 2)像正常一样滚动单元格(B),但是将它的子项(C)的位置改变到相反的方向 ,以使标题即使在移动时也显示为静止 (在父项的相反方向上(B) 。 这是我正在尝试构建的内容: 有任何想法吗? ps 1:我注意到很多SO答案,建议使用ItemDecoration ,但所有可能的答案都有VERTICAL实现的代码,这与HORIZONTAL实现非常不同。 ps 2我以编程方式创建所有视图内容,因此我不会使用布局文件。 (那是因为内容将是反应原生视图,我无法创建具有布局文件的内容)。 ps 3:我还注意到ItemDecoration是旧策略,更新的第三方库扩展了LayoutManager 。 请稍微说清楚,谢谢。

在零索引处插入第一个项目时,notifyItemInserted()不起作用

我试图在第一个位置的回收者视图中插入一个项目,即0索引如下 try { commentList.add(new Comment( Preferences.getProfileImageUrl(), “”, Preferences.getUserName(DONApplication.getInstance()), String.valueOf(Preferences.getUserId(DONApplication.getInstance())), response.getString(“comment_id”), commentText )); commentAdapter.notifyItemInserted(commentList.size() – 1); } catch (Exception e) { e.printStackTrace(); } 但它根本没有显示,但当我关闭窗口并再次打开它时,它变得可见。 我不知道为什么会这样。 有人能帮我吗?

打开SoftKeyboard时,RecyclerView会隐藏Actionbar

我有以下布局 而SendMessageLayout只是一个包含EditText和Button的布局。 在旧的实现中,我使用普通的旧ListView,所以当我请求焦点编辑文本时,键盘会出现,列表视图没有移动,第一个项目是可见的。 但是随着RecyclerView的推出,一切都被推高了,不仅顶级项目不在屏幕之外,而且整个布局都在ActionBar之上。 这是它的样子……

什么是alertcontroller.recyclelistview

什么是alertcontroller.recyclelistview? 它与Normal RecyclerView有何不同,有哪些新function以及如何使用它?

为什么notifyItemChanged只能在setAdapter之后的Runnable中运行?

public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); RecyclerView list = (RecyclerView) findViewById(R.id.list); list.setLayoutManager(new LinearLayoutManager(this)); final RecyclerView.Adapter adapter = getAdapter(); list.setAdapter(adapter); adapter.notifyItemChanged(1, new Object());//this doesn’t work list.post(new Runnable() { @Override public void run() { adapter.notifyItemChanged(1, new Object());//this works } }); } @NonNull private RecyclerView.Adapter getAdapter() { return new RecyclerView.Adapter() […]