Articles of android recyclerview

不显示在recyclerview上的浮动操作button(位于DrawerLayout内部)

我试图让FAB over recyclerview在我的情况下将覆盖整个屏幕。 FAB不会显示,甚至recyclerview是空的。 以下是我的xml代码。 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context="com.technistan.ledger.CreateLedger" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <include android:id="@+id/tool_bar" layout="@layout/tool_bar" ></include> <FrameLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:paddingLeft="2dp" android:paddingRight="2dp" android:id="@+id/recyclerView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> <android.support.design.widget.FloatingActionButton android:id="@+id/myFAB" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="20dp" app:elevation="4dp" /> </FrameLayout> </LinearLayout> <fragment android:id="@+id/fragment_navigation_drawer" android:layout_width="280dp" android:layout_height="match_parent" android:layout_gravity="start" app:layout="@layout/fragment_navigation_drawer" android:name="com.technistan.ledger.NavigationDrawerFragment" tools:layout="@layout/fragment_navigation_drawer" /> </android.support.v4.widget.DrawerLayout> 预览显示如下图所示的浮动button。 http://img.androidcookie.com/android/Screen […]

当NestedScrollView为空时停止AppBarLayout滚动屏幕

我有一个相当典型的列表function使用CoordinatorLayout,AppBarLayout,SwipeRefreshLayout和RecyclerView – 当RecyclerView有足够的内容滚动,页面看起来很好。 当RecyclerView为空或没有足够的内容滚动时,行为是appBarLayout子app:layout_scrollFlags="scroll|enterAlwaysCollapsed"将继续滚动 – 这看起来很奇怪。 有没有办法停止在NestedScrollView空的时候滚动的AppBarLayout子级? <?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.support.design.widget.CoordinatorLayout android:id="@+id/coordinatorLayout" android:background="@android:color/transparent" 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="@android:color/transparent" android:elevation="4dp"> <LinearLayout android:id="@+id/eventHeader" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:background="@color/green" android:orientation="horizontal" app:layout_scrollFlags="scroll|enterAlwaysCollapsed"> <View android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="1"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="scroll|enterAlwaysCollapsed" android:textColor="@color/white" android:textSize="15sp"/> <View android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="1"/> </LinearLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipeToRefresh" android:layout_width="match_parent" android:layout_gravity="fill_vertical" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> […]

Android:垂直viewpager中的RecyclerView

我想在一个垂直的viewpager中实现一个recyclerview。 我目前的布局如下所示 VerticalViewpager – Fragment1 – ImageView – Fragment2 – RecyclerView 如果我从Fragment1滑动到Fragment2一切正常。 我可以在回收站内上下滚动。 如果我尝试滑动/回滚到Fragment1,就会出现问题。 如果用户已经滚动到回收站视图的顶部,我想将下一个“向上”滚动事件转发到垂直viewpager。 我试图重写onInterceptTouchEvent方法,但不幸的是仍然没有成功。 有任何想法吗? 谢谢你的帮助 :)

在ViewPager Fragment中使用NestedScrollView在CoordinatorLayout Android中突然滚动

我在CoordinatorLayout面对ViewPager一个主要的滚动问题。 目前的情况: app:appbarScrollingViewBehaviour在ViewPager上ViewPager 。 ViewPager片段将NestedScrollView作为其父级。 片段布局包含水平RecyclerView 。 当我通过触摸RecyclerView向上滚动时,应用程序栏不会滚动,而只会发生嵌套滚动。 当我通过触摸视图的其余部分进行滚动时, CoordinatorLayout滚动。 6)也嵌套滚动中途停止,并切断内容。 我已经尝试过了: 将ViewPager放在NestedScrollView ,并将app:appbarScrollingViewBehaviour属性设置为NestedScrollView 。 由于RecyclerView无法确定其高度,因此完全切断片段内容。 在RecyclerView上设置setAutoMeasureEnabled(true) ,仍然无法修复高度。 和其他许多方法。 请帮助解决这个问题。 目前的行为可以在上传的.gif中看到。 我也张贴我的代码活动布局和片段布局和RecyclerView行布局。 谢谢 activity.xml: <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:Customs="http://schemas.android.com/apk/res-auto" 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:background="@color/new_color_primary_skim"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/transparent"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsingLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:elevation="0dp" app:layout_scrollFlags="scroll|exitUntilCollapsed" android:minHeight="?attr/actionBarSize"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:fitsSystemWindows="true" app:layout_scrollFlags="scroll|enterAlways" android:layout_height="?attr/actionBarSize"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView […]

Android RecyclerView最后一项删除(运行时)错误

我有RecyclerView与自定义列表项目和CardView项目,在两个不同的Activities 。 现在我得到错误,当我从列表中删除最后剩下的项目,我没有改变任何有关这些acitivities或adapter或RecyclerView 。 错误是: java.lang.NullPointerException at android.support.v7.widget.OrientationHelper$2.getDecoratedStart(OrientationHelper.java:316) at android.support.v7.widget.LinearLayoutManager.findOneVisibleChild(LinearLayoutManager.java:1633) at android.support.v7.widget.LinearLayoutManager.findFirstVisibleChildClosestToStart(LinearLayoutManager.java:1453) at android.support.v7.widget.LinearLayoutManager.computeScrollOffset(LinearLayoutManager.java:997) at android.support.v7.widget.LinearLayoutManager.computeVerticalScrollOffset(LinearLayoutManager.java:969) at android.support.v7.widget.RecyclerView.computeVerticalScrollOffset(RecyclerView.java:1175) at android.view.View.canScrollVertically(View.java:12745) at android.support.v4.view.ViewCompatICS.canScrollVertically(ViewCompatICS.java:35) at android.support.v4.view.ViewCompat$ICSViewCompatImpl.canScrollVertically(ViewCompat.java:940) at android.support.v4.view.ViewCompat.canScrollVertically(ViewCompat.java:1237) at android.support.v7.widget.RecyclerView$LayoutManager.onInitializeAccessibilityEvent(RecyclerView.java:6594) at android.support.v7.widget.RecyclerView$LayoutManager.onInitializeAccessibilityEvent(RecyclerView.java:6573) at android.support.v7.widget.LinearLayoutManager.onInitializeAccessibilityEvent(LinearLayoutManager.java:204) at android.support.v7.widget.RecyclerViewAccessibilityDelegate.onInitializeAccessibilityEvent(RecyclerViewAccessibilityDelegate.java:66) at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl$1.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:228) at android.support.v4.view.AccessibilityDelegateCompatJellyBean$1.onInitializeAccessibilityEvent(AccessibilityDelegateCompatJellyBean.java:56) at android.view.View.onInitializeAccessibilityEvent(View.java:5292) at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:5160) at android.view.View$AccessibilityDelegate.sendAccessibilityEventUnchecked(View.java:20325) at android.support.v4.view.AccessibilityDelegateCompatIcs.sendAccessibilityEventUnchecked(AccessibilityDelegateCompatIcs.java:117) at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateIcsImpl.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:210) at android.support.v4.view.AccessibilityDelegateCompat.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:358) at android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl$1.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:255) at android.support.v4.view.AccessibilityDelegateCompatJellyBean$1.sendAccessibilityEventUnchecked(AccessibilityDelegateCompatJellyBean.java:82) at […]

如何处理RecyclerView.ItemDecoration中的点击事件?

我有一个RecyclerView(LinearLayoutManager)和一个自定义的RecyclerView.ItemDecoration它。 比方说,我想在装饰视图中有button(出于某种原因..)。 我用button膨胀布局,它正确绘制。 但是我不能让button点击。 如果我按下它,没有发生(它保持不变,没有按下的效果)和onClick事件不会触发。 ItemDecoration布局的结构是 <LinearLayout> <TextView/> <Button/> </LinearLayout> 我试图在ViewHolder中设置监听器的装饰 class ItemDecorationHolder extends RecyclerView.ViewHolder { public TextView header; public Button button; public HeaderHolder(View itemView) { super(itemView); header = (TextView)itemView.findViewById(R.id.header); button = (Button)itemView.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //.. Show toast, etc. } }); } } 我在onDrawOver方法中绘制装饰。 (实际上,我正在修改这个代码库: https : //github.com/edubarr/header-decor […]

RecyclerView itemView OnGlobalLayoutListener不会触发所有itemViews

我有一个RecyclerView在其视图持有人构造函数我添加一个onGlobalLayoutListener如下 public CustomViewHolder(final View itemView, Context context) { super(itemView, context); itemView.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // Get height here } }); } 这会触发屏幕上可见的所有itemViews ,但当滚动recyclerView时,它不会触发开始显示在屏幕上的itemViews 。 这是为什么? 我如何捕获这些项目的听众?

如何从另一个ViewHolder中获取对ViewHolder的引用? (RecyclerView)

我有一个RecyclerView和一些view / card (现在我们称之为视图),它们都包含相同的东西,包括我用作分隔条的View 。 我希望能够在当前view上的view更改此分隔栏的属性。 所以说我点击test3的卡,我想能够设置在test2 view中的分隔栏的属性。 澄清: 我只需要对上面的视图(或任何其他的视图)的ViewHolder的参考,我点击,这一切。 我应该怎么做? public class StuffManagerAdapter extends RecyclerView.Adapter<StuffManagerAdapter.MyViewHolder> { private List<StuffManagerClass> stuffList; private Context context; private String TAG = "CStA"; DBHandler dbHandler; ArrayList<String> tagArray = new ArrayList<>(); RecyclerView mRecyclerView; public StuffManagerAdapter(List<StuffManagerClass> stuffList, Context context) { this.stuffList = stuffList; this.context = context; dbHandler = DBHandler.getInstance(context); } public class […]

在一个RecyclerView中的OnClick在TextInputLayout里面的EditText中

在我的Fragment中有一个RecyclerView,里面填充了几个TextInputLayout。 经过一番研究之后,我设法将onClickListener设置为TextInputLayout,并正在工作 但 当我点击TextInputLayout的提示时,onClick事件才被触发。 当我点击TextInputLayout中的EditText时,我希望它被触发。 码: 在我的片段: adapter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.i("Logging", "Element: "+rView.getChildAdapterPosition(v));//rView is RecyclerView RelativeLayout rel=(RelativeLayout)v; TextInputLayout til=(TextInputLayout) rel.getChildAt(0); EditText editText=til.getEditText(); editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) […]

StaggeredGridLayoutManagerdynamic更改spanCount RecylerView

我们如何dynamic改变RecylerView的spanCount? 我的代码在RecyclerView中创build3列卡: StaggeredGridLayoutManager mFavouratesLayoutManager; mFavouratesLayoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL); 我正在尝试使适配器如下所示: 顶部一个元素 第二行中有2个元素 3件以下