首页 > 解决方案 > 我的回收站视图没有显示它拥有的所有项目,我该如何解决?

问题描述

我对 recyclerView 有问题。它不显示所有项目。例如,recyclerView 有 12 个项目,但它显示为 10 个项目的一半。我可以为它设置 paddingBottom ,它会显示所有项目,但我认为这不是一个好方法。我该如何解决?我想可能是因为我上面的按钮。

activity_search_coin.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:paddingBottom="50dp"
        app:layout_constraintTop_toBottomOf="@+id/lianerForThreeBtn" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:background="#FFFFFF"
        android:paddingStart="5dp"
        android:paddingEnd="5dp"
        android:textSize="15sp"
        android:drawablePadding="6dp"
        android:gravity="center_vertical"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <LinearLayout
        android:id="@+id/lianerForThreeBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintTop_toBottomOf="@+id/button2">

        <Button
            android:id="@+id/btn1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="#FFFFFF"
            android:layout_weight="1"/>
        <Button
            android:id="@+id/btn2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="#FFFFFF"
            android:layout_weight="1"/>
        <Button
            android:id="@+id/btn3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="#FFFFFF"
            android:layout_weight="1"/>

    </LinearLayout>

</android.support.constraint.ConstraintLayout>

activity_recycler_view_adapter_coin_list.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/recyclerImage"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp">

    <TextView
        android:id="@+id/denominationTV"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_marginStart="20dp"
        android:layout_marginEnd="8dp"
        android:layout_toEndOf="@+id/secondIV"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/yearTV"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/denominationTV"
        android:layout_alignStart="@+id/denominationTV"
        android:layout_alignParentEnd="true"
        android:layout_marginStart="0dp"
        android:layout_marginTop="6dp"
        android:layout_marginEnd="8dp"
        android:textSize="20sp" />

    <ImageView
        android:id="@+id/firstIV"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignParentStart="true"
        android:layout_marginStart="0dp"/>


    <ImageView
        android:id="@+id/secondIV"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_marginStart="4dp"
        android:layout_toEndOf="@+id/firstIV"/>

</RelativeLayout>

RecyclerViewAdapterCoinList.java

public class RecyclerViewAdapterCoinList extends RecyclerView.Adapter<RecyclerViewAdapterCoinList.ViewHolder> {

    private List<String> mYearList;
    private List<String> mDenominationList;
    private  List<String> mImageList1;
    private  List<String> mImageList2;
    private LayoutInflater mInflater;
    private ItemClickListener mClickListener;
    Context context;

    RecyclerViewAdapterCoinList(Context context, List<String> denominationList,List<String> yearList, List<String> imageList1,List<String> imageList2) {
        this.mInflater = LayoutInflater.from(context);
        this.mYearList = yearList;
        this.mDenominationList = denominationList;
        this.mImageList1 = imageList1;
        this.mImageList2 = imageList2;
        this.context = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = mInflater.inflate(R.layout.activity_recycler_view_adapter_coin_list, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        String year = mYearList.get(position);
        String denomination = mDenominationList.get(position);
        String imageString1 = mImageList1.get(position);
        String imageString2 = mImageList2.get(position);
        holder.denominationTV.setText(denomination);
        holder.yearTV.setText(year);

        try {
            Glide.with(context).load(imageString1).into(holder.firstIV);
            Glide.with(context).load(imageString2).into(holder.secondIV);
        }catch (Exception e){e.printStackTrace();}


    }

    // total number of rows
    @Override
    public int getItemCount() {
        return mDenominationList.size();
    }


    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        TextView denominationTV;
        TextView yearTV;
        ImageView firstIV;
        ImageView secondIV;

        ViewHolder(View itemView) {
            super(itemView);
            denominationTV = itemView.findViewById(R.id.denominationTV);
            yearTV = itemView.findViewById(R.id.yearTV);
            firstIV = itemView.findViewById(R.id.firstIV);
            secondIV = itemView.findViewById(R.id.secondIV);
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View view) {
            if (mClickListener != null) mClickListener.onItemClick(view, getAdapterPosition());
        }
    }

    String getItem(int id) {
        return mDenominationList.get(id);
    }

    void setClickListener(ItemClickListener itemClickListener) {
        this.mClickListener = itemClickListener;
    }

    public interface ItemClickListener {
        void onItemClick(View view, int position);
    }
}

标签: javaandroidandroid-layoutandroid-recyclerview

解决方案


尝试app:layout_constraintBottom_toBottomOf="parent"在回收器视图中添加,并将回收器视图的高度设置为 0dp (match_constraint)。


推荐阅读