【问题标题】:RecyclerView showing one item onlyRecyclerView 仅显示一项
【发布时间】:2017-07-19 15:12:27
【问题描述】:

我正在使用 RecyclerView,但是当在 recyclerview 中查看项目时,仅显示列表中的第一项 这是 RecyclerView 适配器

 package com.example.abdelmagied.myapplication;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import org.w3c.dom.Text;

import java.util.ArrayList;

/**
 * Created by AbdELMagied on 7/19/2017.
 */
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyViewHolder>{
    private ArrayList<items> myitems;
    public LayoutInflater inflater;
    public RecyclerAdapter(Context context, ArrayList<items> myitems) {
        this.myitems = myitems;
        this.inflater = LayoutInflater.from(context);
    }

    @Override
    public RecyclerAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
      View v = inflater.inflate(R.layout.recyclerviewrow , parent , false);
        return new MyViewHolder(v);
    }

    @Override
    public void onBindViewHolder(RecyclerAdapter.MyViewHolder holder, int position) {
           holder.name.setText(myitems.get(position).name);
        holder.price.setText(myitems.get(position).price);
    }

    @Override
    public int getItemCount() {
        return myitems.size();
    }

    public static class MyViewHolder extends  RecyclerView.ViewHolder{
         TextView name;
         TextView price;
        public MyViewHolder(View itemView) {
           super(itemView);
            name = (TextView) itemView.findViewById(R.id.recyclerviewname);
            price = (TextView)itemView.findViewById(R.id.recyclerviewprice);
        }
    }
}

这是名为 recyclerviewrow.xml 的布局

   <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:text="TextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/recyclerviewname" />

    <TextView
        android:text="TextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/recyclerviewprice" />
</LinearLayout>

这是 Main3Activity.xml

 package com.example.abdelmagied.myapplication;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.support.v7.widget.LinearLayoutManager;
    import android.support.v7.widget.RecyclerView;
    import android.widget.Toast;

    import java.util.ArrayList;

    public class Main3Activity extends AppCompatActivity {
       public RecyclerView mRecyclerView;
        public RecyclerView.LayoutManager mymanager;
        public RecyclerView.Adapter recyclerViewAdapter;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main3);
            Bundle bundle =  getIntent().getExtras();
            ArrayList<items> myitems = bundle.getParcelableArrayList("myarray");
            ArrayList<items> go = new ArrayList<items>();
             go.add(new items("mobile" , " blablabl" , "655"));
            go.add(new items("labtop" , " blablabl" , "655"));
            go.add(new items("sony" , "blablbl" , "655"));
            go.add(new items("mobile" , " blablabla" , "655"));
            go.add(new items("mobile" , "blablabla" , "655"));
            mRecyclerView = (RecyclerView) findViewById(R.id.RecyclerId);
            mymanager = new LinearLayoutManager(this);
            mRecyclerView.setHasFixedSize(true);
            mRecyclerView.setLayoutManager(mymanager);
            recyclerViewAdapter = new RecyclerAdapter(this , go);
            mRecyclerView.setAdapter(recyclerViewAdapter);

        }
    }

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

    问题是match_parent,将您的父项android:layout_height 更改为wrap_content。

    现在你也会有项目,但它会在底部,如果你滚动你可以看到第二个项目。

    这样改,

        <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="vertical" android:layout_width="match_parent"
            android:layout_height="wrap_content">
    </LinearLayout>
    

    【讨论】:

      【解决方案2】:

      在您的 recyclerviewrow.xml 中,将 LinearLayout 高度更改为 wrap_content。

      【讨论】:

        【解决方案3】:

        你也可以给你LinearLayout一个minWidth并将宽度设置为wrap_content

        <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="vertical" android:layout_width="wrap_content"
            android:layout_height="match_parent">
        
            <TextView
                android:text="TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/recyclerviewname" />
        
            <TextView
                android:text="TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/recyclerviewprice" />
        </LinearLayout>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-10-20
          • 1970-01-01
          • 2023-03-07
          • 1970-01-01
          • 1970-01-01
          • 2015-07-31
          • 2022-01-03
          相关资源
          最近更新 更多