Articles of android recyclerview

通过AdapterPosition获取RecyclerView的视图

我有一个带有video预览的RecyclerView。 当用户滚动时,video应自动在用户可见的recyclerView项目上播放(当滚动状态为IDLE时)。 所以我编写了一个自定义onScrollListener,它将用户可见的位置作为数组传递给方法startVideosOn(int[] positions) 。 但问题是当我想通过位置获取View时(位置等于适配器位置)。 当我尝试使用linearLayoutManager.getChildAt(index)时,在显示第3个项目时我得到null ,因为RecyclerView只有2个子项,这些子项将被回收。 那么如何通过适配器位置设置获取RecyclerView的View ? 编辑,这是OnScrollListener: public abstract class AutoPlayRecyclerOnScrollListener extends RecyclerView.OnScrollListener { LinearLayoutManager linearLayoutManager; public AutoPlayRecyclerOnScrollListener(LinearLayoutManager linearLayoutManager) { this.linearLayoutManager = linearLayoutManager; } @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { int firstVisibleItemPosition = linearLayoutManager.findFirstVisibleItemPosition(); int lastVisibleItemPosition = linearLayoutManager.findLastVisibleItemPosition(); if (firstVisibleItemPosition != -1 […]

不要在RecyclerView中回收特定的视图types

我有一个重用视图的循环器视图,我的问题是一个视图包含ViewPager,如果recyclelerview的适配器重用视图所在的视图,那么viewpager会发生exception。 但是,onCreateViewHolder方法仅在第一次调用时才会被调用。 我怎么能避免这种行为,并实现onCreateViewHolder可以被多次调用? 提前致谢

更新RecyclerView项ProgressBar而不在适配器上调用notifyItemChanged(int)

我正在尝试更新progressBar,它是其中一个RecyclerView项目的一部分。 我知道我可以用两种方式做到 方法1:通过调用notifyItemChanged(position)刷新项目行 方法2:使用LayoutMananger对象上的findViewByPosition()方法访问视图。 但不幸的是,他们都没有在我的案件中工作。 如果我使用第一个,整个项目将重新绘制,recyclerview的背景颜色为灰色,项目为白色,因此用户可以注意到整个项目刷新。 如果我尝试第二个,滚动时我会遇到问题。 我想像WhatsApp那样更新进度。 提前致谢

在Android中折叠时,如何将RecyclerView放在CollapsingToolbarLayout下面并响应工具栏?

我正在开发一个Android应用程序。 在我的应用程序中,我正在使用,CollapsingtoolbarLayout和RecyclerView。 两者都有效。 但是我在定位它们时遇到了问题。 我想要的是我想直接在Collapsing Toobar下面使用RecyclerView,我希望RecyclerView在折叠时与工具栏一起上去。 但我的代码没有像我预期的那样工作。 这就是现在发生的事情。 如您所见,回收站视图具有工具栏覆盖的固定位置。 它无法响应折叠的工具栏。 这是我的XML布局: <!– –> 在活动中,我没有配置除初始化RecyclerView和设置数据之外的任何内容。 这就是我在活动中设置RecyclerView的方法 private void setDestinationRecyclerView() { RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getBaseContext()); rcDestinations.setLayoutManager(mLayoutManager); rcDestinations.setItemAnimator(new DefaultItemAnimator()); regionsList = new ArrayList(); destinationsAdapter = new DestinationsAdapter(regionsList,getBaseContext()); rcDestinations.setAdapter(destinationsAdapter); //add items and notify data changed } 那么,如何在折叠时使RecyclerView对CollapsingToolbarLayout做出响应?

如何在android中实现加载更多的recyclerview

我想在Recyclerview中实现更多的加载。 这是代码。 代码来自github。 https://gist.github.com/ssinss/e06f12ef66c51252563e MainActivity代码: package com.example.tatson.bila; import android.app.ProgressDialog; import android.os.AsyncTask; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonArrayRequest; import com.android.volley.toolbox.Volley; import com.example.tatson.bila.CardAdapter; import com.example.tatson.bila.Config; import com.example.tatson.bila.SuperHeroes; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.w3c.dom.Text; […]

ViewPager中的Espresso Recylerview匹配多个视图

如何使用实现具有匹配多个视图的ID的RecylerView的片段来定位Viewpager? 我有一个MainActivity,它有一个Viewpager。 Viewpager有5个标签。 在这5个选项卡中,我使用RecylerViews在每个选项卡中加载图像。 RecylerView XML在不同的片段中重复使用,因此当使用Espresso访问它时,它会保持抱怨ID匹配多个视图。 我的RecylerView不加载任何文本,只加载图像,所以我甚至不能用withText(“Text here”) 。 我也不能对RecylerViews使用onData() 。 @RunWith(AndroidJUnit4.class) @LargeTest public class ExampleTest { @Rule public ActivityTestRule mActivityRule = new ActivityTestRule( MainActivity.class); Activity activity = mActivityRule.getActivity(); @Test public void ExampleMethod() { // perform a swipe onView(withId(R.id.viewpager)).perform(swipeLeft()); // try to click on one of the recycler view items. // this crashes: onView(withId(R.id.recycler_view)) .perform(RecyclerViewActions.actionOnItemAtPosition(2, […]

bringToFront在RecyclerView中不起作用

我想在RecyclerView制作一个animation,它要求孩子拥有比另一个孩子更大的z索引。 但是,当我在ViewGroup使用bringToFront方法时,它不起作用。 有没有办法让孩子在RecyclerView前面?

工具栏不会与嵌套的RecyclerView折叠

我在Activity上创建了可折叠的工具栏,但是有一个问题。 屏幕包含具有多个布局项的RecyclerView,其中一个是具有水平滚动的另一个RecyclerView。 滚动主循环器时,在嵌套的回收器上滚动时,工具栏不会展开或折叠,但在其他视图上,它的工作正常。 为了更容易理解:当我第一次触摸屏幕上有嵌套的RecyclerView的位置并尝试向上和向下滚动时,工具栏没有折叠或扩展。 知道什么可能导致该问题以及如何解决它?

水平RecyclerView与开始填充

所以我有一个ImageView作为背景,并在它上面有一个Horizo​​ntal RecyclerView,这里的事情就是我希望RecyclerView从屏幕的半填充到左边开始显示它的项目,这样你就可以在开始时看到完美的背景当您滚动项目时,您将隐藏图像/背景。 注意:检查Play商店以查看我要完成的操作。 所以我有这个工作: 我的观点是以编程方式夸大Horizo​​ntalScrollView内部的布局,并且它运行良好。 但随着时间的推移,我决定迁移到RecyclerView,现在没有按预期工作。 出现背景,Recycler从右侧开始半屏,但滚动时它不会滚动直到屏幕左侧,它只会隐藏设置填充的位置。 如何在RecyclerView中使用此效果? 以下是回收商的详细信息:

ProgressBar没有显示

我的相对布局有两个子Rcyclerview(不可见)和进度条。 我想要的是 :布局的创建,recyclelerview到隐形和进度条显示,直到AsyncTask(从SD文件夹获取图像)完成,Recyclerview可见,进度条不可见。 发生了什么 :我的应用程序没有显示进度条。 在asyctask完成后,我的recyclerview出现了。 XML: ActivityCode: public View onCreateView(LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState){ View rootView=inflater.inflate(R.layout.camera_layout,container,false); rootView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); ButterKnife.inject(this,rootView); init(); initialise(rootView); initialiseListeners(); listofImagesPath = new ArrayList(); new mediaScanAyscTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);} 的AsyncTask public class mediaScanAyscTask extends AsyncTask{ @Override protected Void doInBackground(Void… params) { return null; } @Override protected void onPreExecute() { super.onPreExecute(); adapter.clearApplications(); galleryProgressBar.setVisibility(View.VISIBLE); galleryProgressBar.getIndeterminateDrawable().setColorFilter(Color.parseColor(“#ff4081”), […]