Articles of android recyclerview

使用LinearLayoutManager滚动到RecyclerView顶部

我有一个片段,其中有LinearLayoutManager RecyclerView ,其中有CardView项目。 点击时有一个浮动动作button,项目应该滚动到顶部。 我已经尝试使用scrollToPosition以及scrollToPositionWithOffset与RecyclerView和LinearLayoutManager ,如下所示。 但是它根本没有效果。 这是为什么? 任何人都可以请帮我。 我已经将RecyclerView直接放在xml文件的SwipeRefreshView中。 只要将适配器设置为RecyclerView我就调用setFloatingActionButton 。 public void setFloatingActionButton(final View view) { float = (android.support.design.widget.FloatingActionButton) getActivity().findViewById(R.id.float); float.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mRecyclerView.smoothScrollToPosition(0); android.support.design.widget.Snackbar.make(view, "Scrolled to Top", android.support.design.widget.Snackbar.LENGTH_SHORT) .setAction("Ok", new View.OnClickListener() { @Override public void onClick(View v) { LinearLayoutManager llm = (LinearLayoutManager) mRecyclerView.getLayoutManager(); llm.scrollToPosition(0); } }) […]

无法添加Recyclerview下方的空视图

我正在尝试与应用程序的recyclerview和浮动操作button我的手。 我遇到的问题是浮动操作button阻碍与recyclerview中的button。 我查了一下Android应用程序如电话应用程序(其中一个在gridvew中显示联系人的应用程序)是如何处理这个问题的,我发现底部留有空的空间,在recyclerview和浮动操作button,用户只需要滚动到底部以避免重叠。 我试图在recyclerview之后添加一个视图,但是没有显示它,这个视图也应该和recyclerview行一起移动。 我错过了什么,以显示在回收视图结束的意见。 我的布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#6fbababa"> <android.support.v7.widget.RecyclerView android:id="@+id/my_recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:scrollbars="vertical"/> <ImageButton android:id="@+id/button_floating_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:src="@drawable/ic_fab" android:background="@null" android:layout_alignParentBottom="true" android:layout_marginBottom="12dp" android:layout_marginEnd="12dp" android:layout_marginRight="12dp" android:elevation="2dp"/> <View android:layout_width="match_parent" android:layout_height="30dp" android:layout_below="@id/my_recycler_view" android:background="@color/white"/> </RelativeLayout> 更新:修改布局代码,使其工作。 <android.support.v7.widget.RecyclerView android:id="@+id/my_recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" android:paddingBottom="30dp" android:scrollbars="vertical"/>

如何正确突出显示RecyclerView上的选定项目?

我正在尝试使用RecyclerView作为水平的ListView 。 我想弄清楚如何突出选定的项目。 当我点击其中一个项目,它被选中,它被正确地突出显示,但是当我点击另一个时,第二个与较旧的一个突出显示。 这是我的onClick函数: @Override public void onClick(View view) { if(selectedListItem!=null){ Log.d(TAG, "selectedListItem " + getPosition() + " " + item); selectedListItem.setBackgroundColor(Color.RED); } Log.d(TAG, "onClick " + getPosition() + " " + item); viewHolderListener.onIndexChanged(getPosition()); selectedPosition = getPosition(); view.setBackgroundColor(Color.CYAN); selectedListItem = view; } 这里是onBindViewHolder : @Override public void onBindViewHolder(ViewHolder viewHolder, int position) { viewHolder.setItem(fruitsData[position]); if(selectedPosition […]

Android布局:使用滚动行为的Viewpager中的垂直RecyclerView内的水平RecyclerView

这是我试图build立与所有元素映射下面的应用程序: 一切正常,但是,我想内部水平recyclerview不捕捉任何垂直滚动。 所有的垂直卷轴都必须朝向外部垂直recyclerview,而不是水平卷轴,因此垂直卷轴将允许工具栏根据其scrollFlag退出视图。 当我将手指放在recyclerview的“StrawBerry Plant”部分并向上滚动时,它将滚动出工具栏: 如果我将手指放在水平滚动视图上并向上滚动,则根本不会滚出工具栏。 以下是我到目前为止的xml布局代码。 活动 xml布局: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/fragment_container" android:clipChildren="false"> <android.support.design.widget.CoordinatorLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/container" > <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:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_scrollFlags="scroll|enterAlways"> </android.support.v7.widget.Toolbar> <android.support.design.widget.TabLayout android:id="@+id/sliding_tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" style="@style/CustomTabLayout" /> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.support.design.widget.CoordinatorLayout> </FrameLayout> “水果”片段的 XML布局(这是片段的代码 […]

在RecyclerView内拖放

我想要在Android L版本的RecyclerView中拖放function(用于重新sorting)。 我认为这个小部件本身不提供这个function,对吧? 那么如何实现这样的function呢?

如何在onclick上打开recyclerView项目上的不同活动

我正在使用recyclerView来显示我的listitems在navigation drawer 。我已经实现了onclickListener但我一直坚持如何打开不同的activity当项目被clicked 。 我所有的项目都是按照代码来完成的。 我将不胜感激的帮助。 AdapterClass.java 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); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { Information […]

RecyclerView onBindViewHolder仅在getItemViewType更改时调用

我有一个视图与多个视图types。 当滚动onBindViewHolder仅在getItemViewType改变值时被调用。 这导致我的列表项不能正确更新。 这是一个错误? 或者我在这里做错了什么。 这似乎来自新的recyclerView类非常奇怪的行为。 这是我的适配器: package se.davison.smartrecycleradapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.util.SparseIntArray; import android.view.LayoutInflater; import android.view.ViewGroup; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; /** * Created by richard on 10/11/14. */ public class SectionAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private static final String TAG = SectionAdapter.class.getSimpleName(); private final LayoutInflater inflater; private […]

如何导入RecyclerView Android L预览

尝试从支持库中使用新的RecyclerView。 我使用SDKpipe理器下载了支持库的20更新。 我已经将jar文件添加到libs文件夹 – 并添加到构buildpath – 使用RecyclerView没有运气。 试图也使用根据Android开发人员的API gradle依赖项 – 不知道这是否是正确的地方看 – 这个页面更关联到AndroidTV: com.android.support:recyclerview-v7:20.0.+ 无法gradle同步项目。 有任何想法吗?

滚动时获取RecycleView的中心可见项

这就是我要的: 如上图所示,我想在RecycleView上绘制一个中心线,然后在滚动时(以及向左或向右移动)获取中心项目, 这里是我尝试绘制一个水平的RecycleView : HorizontalAdapter adapter = new HorizontalAdapter(data); LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); recycleView.setLayoutManager(layoutManager); recycleView.setAdapter(adapter); 有没有什么办法知道哪个项目被移到RecycleView中心? 我怎样才能将RecycleView向左或向右滚动一个位置? 更新 :我试图使用滚动监听器来获取中间位置,但它不能作为方面。 @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int firstPos = layoutManager.findFirstVisibleItemPosition(); int lastPos = layoutManager.findLastVisibleItemPosition(); int middle = Math.abs(lastPos – firstPos) / 2 + firstPos; int selectedPos […]

如何在ViewPager的CoordinatorLayout下面获得Adview

目前, AdView出现在ViewPager内部,因此阻止了应用程序中的内容。 如何让AdView出现在ViewPager下方,而不是在里面。 我曾尝试将AdView放置在ViewPager下方的RelativeLayout中,但AdView完全不显示。 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:ads="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.candyx.testapp.Activity"> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/main_button_background"> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_scrollFlags="scroll|enterAlways"/> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="scrollable" app:tabGravity="fill" app:tabIndicatorColor="@color/colorTabIndicator" app:tabIndicatorHeight="3dp"/> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> <com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="match_parent" android:layout_height="wrap_content" ads:adSize="BANNER" ads:adUnitId="@string/banner_ad_unit_id" android:layout_gravity="center|bottom"/> </android.support.design.widget.CoordinatorLayout> </LinearLayout>