Articles of android recyclerview

检查nestedscrollview中的recyclelerview滚动状态

我在NestedScrollView中使用了recyclerview,我希望在滚动后将搜索栏固定到操作栏,并且必须在搜索栏下显示recyclelerview项目,我需要为我的recyclerview项目进行延迟加载(在滚动到结束后从服务器加载下一项)为此,我需要检查recyclerview滚动更改状态,当我在nestedscrollview中使用recyclelerview时,我无法做到这一点。 我尝试使用nestedscrollview滚动状态更改侦听器,它不会给我我想要的东西,也不能正常工作。 如果将嵌套滚动视图放在recyclerview中,则它不起作用。 我有懒惰加载recyclelerview但相同的布局包含其他布局,如滑块,菜单然后recyclerview。 我想滚动完整的布局,当recyclerview结束onscroll然后onload执行从Internet获取更多项目并加载recylerview。 在这里你看到我的代码: 我的布局xml代码 我的代码检查滚动状态,但它不起作用 nested_content.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() { @Override public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { if (scrollY oldScrollY) { // down ((MainActivity)getActivity()).animateNavigation(true); } if (scrollY == ( v.getChildAt(0).getMeasuredHeight() – v.getMeasuredHeight() )) { if (!is_loading) { if (current_page < all_pages) { //not work right scroll state […]

如何从漂亮的animation中删除RecyclerView中的所有项目

我必须通过在列表视图中展开和折叠animation来实现列表视图。 我有一个方法使用这样做,但它不适用于RecyclerView视图。 整个RecyclerView将在短时间内可见,并在此之后启动animation。 请参阅此链接中的GIF 。 作为替代方案,我按照这篇文章 ,添加和删除所有项目(它总是少于5项,因此没有性能问题)使用 LayoutAnimation实现如下。 如您所见,列表视图项目显示animation工作。 隐藏项目反转animation文件中的属性,如下所示,并在从RecyclerView删除所有数据后应用它 item_remove_animation_drop_down.xml layout_animation_fall_down.xml 适配器中的方法 public void runItemRemoveAnimation(final RecyclerView recyclerView) { final LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(context, R.anim.layout_animation_drop_down); recyclerView.setLayoutAnimation(controller); recyclerView.getAdapter().notifyDataSetChanged(); recyclerView.scheduleLayoutAnimation(); } 片段中的代码 private void onClickSelectPromotionContainer() { selectPromotionContainer.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (discountListExpanded) { promoListData.removeAll(promosDataFromServer); discountListAdapter.runItemRemoveAnimation(discountRecyclerView); selectPromotionImage.startAnimation(rotatePlus180); discountListExpanded = false; } else { […]

使用滚动RecyclerView时如何在ViewPager中隐藏工具栏?

我在view-pager中有一个工具栏(带有水平滑动导航的选项卡式工具栏),每个选项卡都有自己的带有recyler_view的片段。 我现在想要在我的recyler_view滚动时隐藏工具栏。 在我的片段中,我添加了on scroll-listener,并希望在其activity类中调用一个方法来隐藏工具栏。 工具栏在活动中创建。 如何从我的片段中调用此方法? 或者在我的片段本身中实现这种隐藏方法会更好。 但是,我怎么能“联系”我的工具栏,这是在活动中而不是在片段中创建的。 我find了解决方案,但没有一个讨论片段中的recylcer_view和用于选项卡式导航的view-pager。 如果你可以帮助我会很棒……

如何在使用列表/网格/回收站视图时为活动转换设置animation?

我正在尝试实现一些新的Material Design活动animation,但是我阅读的教程仅显示了animation视图属于活动的示例。 在我的应用程序中,我使用的是RecyclerView ,因此ImageView不是活动的一部分: MainActivity -> Where I call startActivity() ↳ MainFragment ↳ RecyclerView ↳ RecyclerViewAdapter ↳ ViewHolder ↳ ImageView -> The hero imageView I’d like to animate 从我读到的,我应该开始这样的新活动: ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, (View) mImageView, “hero_image”); Intent intent = new Intent(this, SecondActivity.class); startActivityForResult(intent, options.toBundle()); 问题是: mImageView不属于MainActivity 。 我该如何通过呢?

如何根据设备屏幕尺寸使用RecyclerView?

我有一个后端API端点,它在某些集合中返回JSON 。 每组包含10 lines of Json 。 例如: curl http://www.something.com?getData=0将给出first 10 elements和curl http://www.something.com?getData=1将返回下一组等等。 我使用RecyclerView和StaggeredGridView从给定的endpoints加载数据。 现在我只取第一套,它的工作非常好。 我在找什么? 如何根据Android屏幕尺寸在RecyclerView加载数据。 例如: 假设设备hdpi能够在RecyclerView加载25 RecyclerView 。 所以,这里的endpoints按顺序请求: http://www.something.com?getData=0 // will fetch 0-10 http://www.something.com?getData=10 // will fetch 11-20 http://www.something.com?getData=10&skip=5 // will fetch 21-25 如何动态制作上述流程。 这样它适用于所有屏幕尺寸? 顺便说一句,这是我将数据加载到StaggeredGridView适配器的方式: mRecyclerView = (RecyclerView) mActivity.findViewById(R.id.staggering_grid); mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); mAdapter = new StaggeredGridAdapter(mContext); mAdapter.addItems(response); mRecyclerView.setAdapter(mAdapter); 可能解决方案 如果我知道我需要根据设备填充多少Grid […]

在recycleview上的wrap_content,取项目的高度(水平列表)

我有一个RecycleView,设置为水平。 现在我希望高度与视图中项目的高度相匹配。 我事先并不知道高度。 目前我有这个: 主要片段: 图片 但它总是占用整个屏幕。 所以我之间有很多空白。 有没有办法可以在recycleview项目上使用wrap_content? 这就是它目前的样子: 我目前放置了2个横幅,顶部有大空白,小图像是带有recyclerview的横幅。 下面的图片只是放在图像视图中的图像(它看起来应该是什么样子,但我希望它带有recyclerview,所以如果我有多个,我可以滚动横幅)

向下滚动时,Android Recyclerview滞后

我在里面有一个带有recyclerview(GridlayoutManager)的片段。 recyclerview中的项目并不复杂或有图像,但向下滚动Recyclerview滞后(在Nexus 5上测试)。 我将hasFixedSize和hasStableIds设置为true有人知道为什么会这样吗? 提前致谢。 分段 public class EditTimetableFragment extends Fragment implements TimetableRecyclerViewAdapter.ClickListener { public EditTimetableFragment() {} DAO dao; SharedPreferences sharedPreferences; SharedPreferences.Editor editor; RecyclerView recyclerViewTimetable; Spinner spinnerSubject; TimetableRecyclerViewAdapter timetableRecyclerViewAdapter; TaskSubjectSpinnerAdapter taskSubjectSpinnerAdapter; List subjectList; List timetableList; FloatingActionButton fabAddSubject; boolean saturday, sunday; int dayLength, hourLength; TextView textViewSa, textViewSu; LinearLayout week, linearLayout; View view; public View getView() { […]

viewHolder.getAdapterPosition()始终返回-1

由于某种原因,我无法使用holder.getAdapterPosition()因为它总是返回-1但holder.getLayoutPosition()返回一个位置就好了。 我的onCreateViewHolder: @覆盖 public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // create a new view View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.my_item, parent, false); ViewHolder vh = new ViewHolder(this, v); return vh; } 我的ViewHolder构造函数: public ViewHolder(DirectoryListAdapter adapter, View linear) { super(linear); this.adapter = adapter; this.linear = (LinearLayout) linear; this.entryName = (TextView) linear.findViewById(R.id.item_name); this.entryImage = (ImageView) linear.findViewById(R.id.item_image); } […]

从数据列表中查找RecyclerView中项目的位置

我想从RecyclerView的数据集中获取RecyclerView项目的位置。 我的数据集中的每个项目都包含唯一的ID 。 我想在RecyclerView中find与数据集中的id对应的项的适配器位置。 我的数据集类如下所示。 class dataset { int id; JSONArray linked; int type; …. } 我根据types将TextView或EditText添加到RecyclerView 。 最终目标:我的RecyclerView可以有多个独立的EditText和TextViews (尽管TextView将有一个字段,其中包含与其链接的EditText的id)。 当我单击TextView ,我将使用EditText (dataset)的id来获取数据。 我想从RecyclerView的项目中获取相应EditText的文本和那些id。 如果我可以从数据集中获取适配器位置,我可以以某种方式使用 recyclerview.getChildAt(position); 但是没有办法从数据集中获取适配器位置。

对于CoordinatorLayout内的RecyclerView,滚动无法正常工作

其实我有2个问题 1。 滚动不能正常工作,有时当我们在特定方向上滚动非常小的距离并保持触摸时,滚动非常快,直到特定方向的末端,即上下颠倒 第2位。 我希望自定义工具栏的标题仅在其折叠时显示,并且在展开时应隐藏标题 这是XML代码