Articles of android recyclerview

在两个回收视图之间拖放

我创建了2个Horizo​​ntal recycleView。 哪个是完美的。 我需要在每个recycleView中的项目之间拖放function,以及在这两个recycleView项目之间拖放。 我现在还做了什么 – private RecyclerView mRecyclerViewCompletedTask; private RecyclerView.Adapter mAdapterCompletedTask; private RecyclerView.LayoutManager mLayoutManagerCompletedTask; private static String LOG_TAG = “RecyclerViewActivity”; private RecyclerView mRecyclerViewInCompleteTask; private RecyclerView.Adapter mAdapterInCompleteTask; private RecyclerView.LayoutManager mLayoutManagerInCompleteTask; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); mRecyclerViewCompletedTask = (RecyclerView) findViewById(R.id.my_recycler_view_completed_task); mRecyclerViewCompletedTask.setHasFixedSize(true); mLayoutManagerCompletedTask = new LinearLayoutManager(this); mRecyclerViewCompletedTask.setLayoutManager(mLayoutManagerCompletedTask); mAdapterCompletedTask = new MyRecyclerViewAdapterCompletedTask(getDataSet()); mRecyclerViewCompletedTask.setAdapter(mAdapterCompletedTask); LinearLayoutManager layoutManager1 […]

RecyclerView和背景请求与大量项目

我有一个包含大量collections品的RecyclerView ,比如500多个项目。 当onBindViewHolder ,我发出异步HTTP请求来加载一些数据。 但是当我在列表中快速滚动时,如何取消对不再可见的所有项目的请求? 我看到100个请求在后台开始,因为RecyclerView加载的方式,我认为onBindViewHolder是为我滚动的每个项目调用的? 我想在onBindViewHolder中启动等待500毫秒的请求,如果绑定到它的项仍然在视图中/仍然相同,则启动异步请求。 这会有用吗? 如果是这样,那么我如何检查项目是否仍然在适配器内? 解决这个问题的正确方法是什么?

RecyclerView焦点滚动

我有一个RecyclerView,通常有两列,最多八列。 我们使用了很多D-PAD导航。 滚动时我们遇到问题,焦点项目将从左向右跳跃。 看照片: 我注意到如果下一个出现的项目被缓存,滚动时没有焦点问题。 我遇到的另一个问题是我的焦点项目可以出现在我的粘贴标题下方。 这是不希望的。 所以我觉得如果我滚动它就会有这样的“阈值”。 这样,当焦点在屏幕外的一个项目内时,它将滚动。 这样,焦点永远不会位于最底层或最顶端。 考虑到这一点,我尝试了这种方法没有运气: RecyclerView rv; @Override public void onFocusChange(View v, boolean hasFocus) { if(!v.hasFocus()) { Log.w(TAG, “View v did not have focus”); return; } final int index = rv.getChildPosition(v); //adapter pos if(index == NO_POSITION) { Log.w(TAG, “Recycler view did not have view”); return; } int position = […]

RecyclerView layoutmanager用于更改行和列跨度

我希望创建以下布局(红色sqaures不一定是正方形,自定义固定高度也很好)。 布局似乎很简单,但我没有find适合我需要的布局管理器。 我尝试了StaggeredGridLayoutManager,但这只允许设置列或行的跨度,而不是两者。 在自定义布局管理器周围是否有浮动能够执行此操作? 我看过TwoWayView但是改变高度似乎有问题而且库没有被维护。 有人遇到这个问题并解决了吗?

如何在android中对RecyclerView项进行排序

我正在开发一个Android聊天应用程序。 当我打电话给我的api时,它会返回按user_id排序的聊天列表。 但我需要做的是通过message_id序列化,因为我想先显示最后一条消息。这是我的onBindViewHolder方法,其中我得到了值。 public void onBindViewHolder(final MyAdapter_HomeViewHolder holder, final int position) { holder.userNameTV.setText(data.get(position).getUserInfo().getFullName()); holder.msgBodyTV.setText(data.get(position).getBody()); holder.originator_iD.setText(data.get(position).getUserInfo().getId().toString()); //message ID. I need to serialize my recyclerView by this ID.biggest id should appear first. holder.messageId.setText(data.get(position).getId().toString()); holder.owner_type_ET.setText(“1”); holder.subject_ET.setText(“Message”); } 如果您需要查看完整代码, 请https://pastebin.com/Zxmq36Gn

recyclerView.setAdapter不接受ArrayAdapter

我试图用简单的String数据填充RecyclerView但是recyclerView.setAdapter(adapter); 给出错误。 有什么问题? 我是recyclerview的新手。 RecyclerView recyclerView; String []data = {“ankush”, “kapoor”}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = (RecyclerView) findViewById(R.id.myRecyclerView); ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, data); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(adapter); }

如何在NestedScrollView中使用RecyclerView

我有这个布局: 它运作良好。 我可以平滑地滚动RecyclerView而无需滚动父视图。 现在我必须将RecyclerView放在FrameLayout如下所示: 现在我无法顺利滚动RecyclerView 。 我想要的是:平滑滚动RecyclerView而不滚动父视图。 我该怎么办? 编辑 :这是我的review_empty布局:

处理RecyclerView,NestedScrollView和CardView

我将在我的应用程序中实现此UI: 好吧,我之前尝试过的一些方法: 1.使用CollapsingToolbarLayout我将我的CardView放入CollapsingToolbarLayout并将它们全部放在AppBarLAyout中。 </CardView PS:我删除了不相关的代码,不提我 这种方式正常但是!!! 当CardView高度高于屏幕高度时,它的内容由AppBarLayout并且不向用户显示 2.使用NestedScrollView我将CardView和RecyclerView放在NestedScrollView 。 但问题是当用户到达时回收到RecyclerView,然后滚动回到顶部,fling会变得迟钝和错误并停止一些用户必须滚动越来越多的地方! 如何解决这个问题?! 我不想使用为recyclelerview制作标题的适配器,我从其中一些获得了与性能相关的问题。 回答 如您在2中所见,将RecyclerView放在NestedScrollView中并应用.setNestedScrollingEnabled并将其设置为false

如何从外部更改recyclerview项目的布局?

我有一个RecyclerView,它有一个Button和一个EditText。 我在RecyclerView外面有一个Button。 单击外部按钮,我希望RecyclerView中的Button在隐藏和显示之间切换。 怎么做? 我试图将一个布尔参数mEditFlag发送到recyclerAdapter,toogle mEditFlag,并通知适配器数据已更改。 但它不起作用。 mCurrentOrderRecyclerAdapter = new CurrentOrderRecyclerAdapter(this, mEditFlag); rvOrder.setAdapter(mCurrentOrderRecyclerAdapter); rlEditOrderList.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mEditFlag = !mEditFlag; mCurrentOrderRecyclerAdapter.notifyDataSetChanged(); if (mEditFlag) { ivEditOrderList.setImageResource(R.drawable.order_edit_true); tvEditOrderList.setText(R.string.order_edit_flag_true); } else { ivEditOrderList.setImageResource(R.drawable.order_edit_false); tvEditOrderList.setText(R.string.order_edit_flag_false); } } }); @Override public void onBindViewHolder(OrderRecyclerViewHolder holder, final int position) { if(editFlag) { holder.rlLeftItemRvOrder.setVisibility(View.VISIBLE); } else { holder.rlLeftItemRvOrder.setVisibility(View.GONE); […]

如何保存和恢复RecyclerView的滚动确切位置?

抱歉我的英语不好。 我想要确切的位置。 在活动/片段被破坏后 (无论我是破坏它还是系统破坏它),我重新打开活动/片段, RecyclerView也可以像它被销毁一样。 “相同”并不意味着“项目位置”,因为该项目可能仅在上次部分显示。 我希望恢复完全相同的位置。 我在下面尝试了一些方法,但没有人是完美的。 有人可以帮忙吗? 1.第一种方式。 我使用onScrolled来计算滚动的确切位置,当滚动停止时,保存位置。 当微调器更改数据集或片段onCreat时 ,恢复所选数据集的位置。 某些数据集可能有许多行。 它可以在应用程序被销毁后保存和恢复,但可能有太多的计算? 它会导致 Skipped 60 frames! The application may be doing too much work on its main thread. attempt to finish an input event but the input event receiver has already been disposed. android total arena pages for jit. 如果scrollY很大,如111111 ,当打开片段时,RecyclerView将首先显示从第一个项目开始的列表,并在一段延迟后,它滚动到scrollY位置。 如何让它没有延迟? […]