标签: android-recyclerview

如何在Android的RecyclerView中添加一个简单的8dp页眉/页脚?

有没有办法将简单的页眉/页脚添加到RecyclerView?

在这里你可以看到我所拥有的.第一张卡片触及工具栏 这就是我所拥有的

在这里你可以看到我想要的东西.底部和卡之间的8dp填充. 这就是我想要的

我到目前为止尝试的方法:

  • 在我的recyclerview中使用标题视图.但我认为对每个回收者来说都是非常有效的.

  • 使用8dp的上边距,这会导致Recyclerview在滚动时在顶部/底部有白条的问题.

  • 在列表项中添加填充,这会导致外卡和内卡之间的边距不同.

  • 我确信到目前为止我还不知道有一个简单的解决方案.

    android margin padding android-recyclerview

    122
    推荐指数
    1
    解决办法
    3万
    查看次数

    Android 5.0 - 将页眉/页脚添加到RecyclerView

    我花了一些时间试图找出一种方法来添加一个标题RecyclerView,但没有成功.这是我到目前为止所得到的:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
    
        layouManager = new LinearLayoutManager(getActivity());
        recyclerView.setLayoutManager(layouManager);
    
        LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        headerPlaceHolder = inflater.inflate(R.layout.view_header_holder_medium, null, false);
        layouManager.addView(headerPlaceHolder, 0);
    
       ...
    }
    
    Run Code Online (Sandbox Code Playgroud)

    LayoutManager似乎是处理的配置对象RecyclerView的项目.因为我无法找到任何addHeaderView(View view)方法,我决定去与LayoutManageraddView(View view, int position)方法,并增加我的头鉴于第一位置,像一个头.

    Aaand这是事情变得更加丑陋的地方:

    java.lang.NullPointerException: Attempt to read from field 'android.support.v7.widget.RecyclerView$ViewHolder android.support.v7.widget.RecyclerView$LayoutParams.mViewHolder' on a null object reference
        at android.support.v7.widget.RecyclerView.getChildViewHolderInt(RecyclerView.java:2497)
        at android.support.v7.widget.RecyclerView$LayoutManager.addViewInt(RecyclerView.java:4807)
        at android.support.v7.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:4803)
        at com.mathieumaree.showz.fragments.CategoryFragment.setRecyclerView(CategoryFragment.java:231)
        at com.mathieumaree.showz.fragments.CategoryFragment.access$200(CategoryFragment.java:47)
        at com.mathieumaree.showz.fragments.CategoryFragment$2.success(CategoryFragment.java:201)
        at com.mathieumaree.showz.fragments.CategoryFragment$2.success(CategoryFragment.java:196)
        at retrofit.CallbackRunnable$1.run(CallbackRunnable.java:41)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135) …
    Run Code Online (Sandbox Code Playgroud)

    java android android-5.0-lollipop android-recyclerview

    120
    推荐指数
    7
    解决办法
    12万
    查看次数

    了解RecyclerView setHasFixedSize

    我理解起来有些困难setHasFixedSize().我知道,当RecyclerView文档中的大小不变时,它用于优化.

    这意味着什么?在大多数常见情况下,ListView几乎总是具有固定的大小.在什么情况下它不是固定的大小?这是否意味着它在屏幕上占据的实际房地产随着内容的增长而增长?

    android android-5.0-lollipop android-recyclerview

    120
    推荐指数
    5
    解决办法
    6万
    查看次数

    CardView layout_width ="match_parent"与父级RecyclerView宽度不匹配

    我有一个包含RecyclerView的片段,其layout_width ="match_parent":

    <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        tools:context=".MainActivity$PlaceholderFragment" />
    
    Run Code Online (Sandbox Code Playgroud)

    RecyclerView中的项目是CardView,其layout_width ="match_parent":

    <android.support.v7.widget.CardView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/card_view"
        android:layout_gravity="center"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="20dp"
        card_view:cardCornerRadius="4dp">
    
        <TextView
            android:layout_gravity="center"
            android:id="@+id/info_text"
            android:layout_width="match_parent"
            android:gravity="center"
            android:layout_height="match_parent"
            android:textAppearance="?android:textAppearanceLarge"/>
    </android.support.v7.widget.CardView>
    
    Run Code Online (Sandbox Code Playgroud)

    我将物品视图膨胀如下:

    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                       int viewType) {
            CardView v = (CardView) LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.card_listitem, null, true);
    
            ViewHolder vh = new ViewHolder(v);
            return vh;
        }
    
    Run Code Online (Sandbox Code Playgroud)

    但是当我运行应用程序时,CardView呈现为wrap_content,如下所示:

    CardsBug

    请注意,这是在模拟器上运行,而不是在真实设备上运行.

    我做错了什么,还是一个错误?

    android android-layout android-cardview android-5.0-lollipop android-recyclerview

    118
    推荐指数
    5
    解决办法
    6万
    查看次数

    对RecyclerView滑动以关闭

    我曾经使用SwipeToDismiss库,但现在我正在尝试迁移到RecyclerView,事情并不那么明显,你知道这个lib的替代品吗?任何想法如何从头开始实现它?

    android android-recyclerview

    116
    推荐指数
    3
    解决办法
    8万
    查看次数

    如何在回收器视图适配器中获取上下文

    我正在尝试使用picasso库来加载url到imageView,但我无法context正确使用picasso库.

    public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> {
        private List<Post> mDataset;
    
    
    
        // Provide a reference to the views for each data item
        // Complex data items may need more than one view per item, and
        // you provide access to all the views for a data item in a view holder
        public class ViewHolder extends RecyclerView.ViewHolder {
            // each data item is just a string in this case
            public TextView txtHeader;
            public ImageView pub_image;
            public ViewHolder(View v) {
                super(v); …
    Run Code Online (Sandbox Code Playgroud)

    java android android-context picasso android-recyclerview

    116
    推荐指数
    9
    解决办法
    8万
    查看次数

    显示单一项目的Recycler视图

    我面临一个奇怪的错误,其中recyclerview只显示一个项目.以下是我的recyclerview适配器的代码:

    public class ChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    
    
    List<chat> chats;
    String username;
    final int My=0,Their=1;
    
    public ChatAdapter(List<chat> chats) {
        this.chats = chats;
        this.username = PushApp.getApp().getSPF().getStringData(Constants.ANAME);
    }
    
    
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        RecyclerView.ViewHolder viewHolder;
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    
        switch (viewType) {
            case My:
                View v1 = inflater.inflate(R.layout.my_chat_child, parent, false);
                viewHolder = new MyChatHolder(v1);
                break;
            case Their:
                View v2 = inflater.inflate(R.layout.their_chat_child, parent, false);
                viewHolder = new TheirMessageHolder(v2);
                break;
            default:
                View v = inflater.inflate(R.layout.my_chat_child, parent, false);
                viewHolder = new MyChatHolder(v);
                break; …
    Run Code Online (Sandbox Code Playgroud)

    android recycler-adapter android-recyclerview

    113
    推荐指数
    3
    解决办法
    4万
    查看次数

    match_parent width在RecyclerView中不起作用

    我的RecyclerView和item有match_parent宽度,但结果是: 在此输入图像描述

        <view
        class="android.support.v7.widget.RecyclerView"
        android:layout_width="match_parent"
    
    Run Code Online (Sandbox Code Playgroud)

    和项目:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:fab="http://schemas.android.com/apk/res-auto"
    android:id="@+id/ll_itm"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    
    Run Code Online (Sandbox Code Playgroud)

    充分:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:fab="http://schemas.android.com/apk/res-auto"
    android:id="@+id/ll_itm"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="100"
    android:gravity="right"
    >
    
    
    <Button
        android:layout_width="0dp"
        android:layout_weight="15"
        android:layout_height="fill_parent"
        android:text="???????"
        android:id="@+id/button" />
    
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="20"
        android:gravity="center"
        >
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            >
    
            <com.getbase.floatingactionbutton.FloatingActionButton
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                fab:fab_plusIconColor="#ff56ff83"
                fab:fab_colorNormal="@color/d_red"
                fab:fab_colorPressed="#ff5c86ff"
                fab:fab_size="mini"
                fab:fab_icon="@drawable/ic_remove_white"
                android:id="@+id/fab_rmv" />
            <esfandune.ir.elmikarbordiardakan.other.CustomTxtView
                android:layout_weight="25"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:text="0"
                android:gravity="right|center_vertical"
                android:id="@+id/txt_takhir_itm" />
            <com.getbase.floatingactionbutton.FloatingActionButton
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                fab:fab_plusIconColor="@color/colorprimarylight"
                fab:fab_colorNormal="@color/colorprimarydark"
                fab:fab_colorPressed="@color/colorprimary"
                fab:fab_size="mini"
                fab:fab_icon="@drawable/ic_add_white"
                android:id="@+id/fab_add" />
    
        </LinearLayout>
    </LinearLayout>
        <Spinner
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="10" …
    Run Code Online (Sandbox Code Playgroud)

    android android-recyclerview

    112
    推荐指数
    8
    解决办法
    5万
    查看次数

    NestedScrollView中的Recycler视图导致滚动从中间开始

    当我在NestedScrollView中添加RecyclerView时,我得到一个奇怪的滚动行为.

    发生的事情是,只要滚动视图的行数多于屏幕中显示的行数,一旦启动活动,NestedScrollView就会从顶部开始偏移(图像1).如果滚动视图中的项目很少,以便可以一次显示它们,则不会发生这种情况(图2).

    我使用的是支持库的23.2.0版.

    图1:错误 - 从顶部偏移开始

    图片1

    图2:正确 - 回收者视图中的几个项目

    图2

    我粘贴在我的布局代码下面:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="fill_vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:padding="10dp">
    
                <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:padding="16dp"
                    android:orientation="vertical">
    
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Title:"
                        style="@style/TextAppearance.AppCompat.Caption"/>
    
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:padding="@dimen/bodyPadding"
                        style="@style/TextAppearance.AppCompat.Body1"
                        android:text="Neque porro quisquam est qui dolorem ipsum"/>
    
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Subtitle:"
                        style="@style/TextAppearance.AppCompat.Caption"/>
    
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        style="@style/TextAppearance.AppCompat.Body1"
                        android:padding="@dimen/bodyPadding"
                        android:text="Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."/>
    
                </LinearLayout>
    
            <android.support.v7.widget.RecyclerView
                android:id="@+id/rv"
                android:focusable="false" …
    Run Code Online (Sandbox Code Playgroud)

    android android-support-library android-recyclerview android-nestedscrollview

    112
    推荐指数
    6
    解决办法
    5万
    查看次数

    "废弃或附加的视图可能无法回收"时,RecyclerView崩溃

    我正在使用一个简单RecyclerView的Android网站实现,StaggeredGridLayoutManager并且我一直收到崩溃我的应用程序的错误:

    java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false isAttached:true
                at android.support.v7.widget.RecyclerView$Recycler.recycleViewHolderInternal(RecyclerView.java:3501)
                at android.support.v7.widget.RecyclerView$LayoutManager.scrapOrRecycleView(RecyclerView.java:5355)
                at android.support.v7.widget.RecyclerView$LayoutManager.detachAndScrapAttachedViews(RecyclerView.java:5340)
                at android.support.v7.widget.StaggeredGridLayoutManager.onLayoutChildren(StaggeredGridLayoutManager.java:572)
                at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:1918)
                at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:2155)
                at android.view.View.layout(View.java:14008)
                at android.view.ViewGroup.layout(ViewGroup.java:4373)
                at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021)
                at android.view.View.layout(View.java:14008)
                at android.view.ViewGroup.layout(ViewGroup.java:4373)
                at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
                at android.view.View.layout(View.java:14008)
                at android.view.ViewGroup.layout(ViewGroup.java:4373)
                at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
                at android.view.View.layout(View.java:14008)
                at android.view.ViewGroup.layout(ViewGroup.java:4373)
                at android.support.v7.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:502)
                at android.view.View.layout(View.java:14008)
                at android.view.ViewGroup.layout(ViewGroup.java:4373)
                at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
                at android.view.View.layout(View.java:14008)
                at android.view.ViewGroup.layout(ViewGroup.java:4373)
                at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663)
                at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521)
                at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
                at android.view.View.layout(View.java:14008)
                at android.view.ViewGroup.layout(ViewGroup.java:4373)
                at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
                at android.view.View.layout(View.java:14008)
                at android.view.ViewGroup.layout(ViewGroup.java:4373)
                at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1892) …
    Run Code Online (Sandbox Code Playgroud)

    android android-recyclerview

    109
    推荐指数
    11
    解决办法
    4万
    查看次数