Android 列表项与回收器视图的对齐问题

Android 列表项与回收器视图的对齐问题,android,listview,adapter,android-recyclerview,listitem,Android,Listview,Adapter,Android Recyclerview,Listitem,在我的一个项目中,我曾经向用户显示项目列表,它就像一个符咒。现在,作为一种尝试,我将Listview替换为,并成功地向用户显示项目 问题是,当我使用自定义的Listview项时,它正在使用Listview。但是,当我尝试用RecyclerView加载相同的内容时,它不适合屏幕 这是我的预期结果。。我通过使用ListView实现了这一点。。这是我所期待的结果 但当我使用RecyclerView时,它显示如下 但我使用相同的listview_项xml来加载这两个视图 这是我的listview_i

在我的一个项目中,我曾经向用户显示项目列表,它就像一个符咒。现在,作为一种尝试,我将Listview替换为,并成功地向用户显示项目

问题是,当我使用自定义的Listview项时,它正在使用Listview。但是,当我尝试用RecyclerView加载相同的内容时,它不适合屏幕

这是我的预期结果。。我通过使用ListView实现了这一点。。这是我所期待的结果

但当我使用RecyclerView时,它显示如下

但我使用相同的listview_项xml来加载这两个视图

这是我的listview_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listrow"
    android:layout_width="match_parent"
    android:layout_height="55dp"
    android:weightSum="9"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="0dp"
        android:layout_height="30dp"
        android:layout_gravity="center"
        android:layout_weight="0.5"
        android:src="@drawable/green" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:gravity="center"
        android:textColor="#000000"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1.5"
        android:gravity="center"
        android:textColor="#000000"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:gravity="center"
        android:textColor="#000000"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:gravity="center"
        android:textColor="#000000"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:gravity="center"
       android:textColor="#000000"
        android:textSize="20sp" />

    <ImageView
        android:id="@+id/imageView_followupone"
        android:layout_width="0dp"
        android:layout_height="22dp"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:src="@drawable/nored" />

    <ImageView
        android:id="@+id/imageView_followuptwo"
        android:layout_width="0dp"
        android:layout_height="22dp"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:src="@drawable/yesgreen" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="0dp"
        android:layout_height="55dp"
        android:layout_weight="1"
        android:gravity="center"
        android:src="@drawable/finalise" />

</LinearLayout>

适配器类:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    private static ArrayList<SearchParms> itemData;
    private static Context abc;
    private int durationOfPatientRecord;

    View itemLayoutView;

    public MyAdapter( ArrayList<SearchParms> items, Context context) {
        this.itemData = items;
        this.abc=context;
    }

    // Create new views (invoked by the layout manager)
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
            int viewType) {
        // create a new view
        itemLayoutView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.list_row_serch, null);


        // create ViewHolder
        ViewHolder viewHolder = new ViewHolder(itemLayoutView);

        return viewHolder;
    }

    // Replace the contents of a view (invoked by the layout manager)
    public void onBindViewHolder(ViewHolder viewHolder, final int position) {

        // - get data from your itemsData at this position
        // - replace the contents of the view with that itemsData

        SearchParms item = itemData.get( position );


        viewHolder.textView1.setText( item.getPartcipantId());
        viewHolder.textView2.setText( item.getParticipantName());
        viewHolder.textView3.setText( "" + item.getAge());
        viewHolder.textView4.setText( item.getCreateDate());
                                   viewHolder.imgView1.setImageResource( R.drawable.finalise );
        viewHolder.imgView2.setImageResource( R.drawable.yesgreen );
                      viewHolder.imgView3.setImageResource( R.drawable.yesgreen );
        itemLayoutView.setBackgroundColor( Color.parseColor( "#15ffffff" ) );


        }

    }

    // inner class to hold a reference to each item of RecyclerView 
    public static class ViewHolder extends RecyclerView.ViewHolder implements OnClickListener {

        public TextView textView1, textView2,textView3, textView4, textView5;
        public ImageView imgView1, imgView2, imgView3, imgView4;

        public ViewHolder(View itemLayoutView) {
            super(itemLayoutView);
            textView1 = (TextView) itemLayoutView.findViewById(R.id.textView1);
            textView2 = (TextView) itemLayoutView.findViewById(R.id.textView2);
            textView3 = (TextView) itemLayoutView.findViewById(R.id.textView3);
            textView4 = (TextView) itemLayoutView.findViewById(R.id.textView4);
            textView5 = (TextView) itemLayoutView.findViewById(R.id.textView5);

            imgView1 = (ImageView) itemLayoutView.findViewById(R.id.imageView1);
            imgView2 = (ImageView) itemLayoutView.findViewById(R.id.imageView_followupone);
            imgView3 = (ImageView) itemLayoutView.findViewById(R.id.imageView_followuptwo);
            imgView4 = (ImageView) itemLayoutView.findViewById(R.id.imageView2);

            itemLayoutView.setOnClickListener(this);

        }

        @Override
        public void onClick(View v) {

            int i=getAdapterPosition();

            SearchParms item = itemData.get( i );

            Toast.makeText(abc, "You Selected::   " +item.getParticipantName(), 3000).show();

        }
    }

    // Return the size of your itemsData (invoked by the layout manager)
    @Override
    public int getItemCount() {
        return itemData.size();
    }
}
公共类MyAdapter扩展了RecyclerView.Adapter{ 私有静态ArrayList itemData; 私有静态上下文; 私人住院时间; 查看项目布局视图; 公共MyAdapter(ArrayList项、上下文){ this.itemData=项目; abc=上下文; } //创建新视图(由布局管理器调用) public MyAdapter.ViewHolder onCreateViewHolder(视图组父级, int视图类型){ //创建新视图 itemLayoutView=LayoutFlater.from(parent.getContext()) .充气(R.layout.list\u row\u serch,空); //创建视图持有者 ViewHolder ViewHolder=新的ViewHolder(itemLayoutView); 返回视图持有者; } //替换视图的内容(由布局管理器调用) 公共无效onBindViewHolder(ViewHolder ViewHolder,最终int位置){ //-从该位置的itemsData获取数据 //-将视图的内容替换为该项数据 SearchParms item=itemData.get(位置); viewHolder.textView1.setText(item.getPartCipandi()); viewHolder.textView2.setText(item.getParticipantName()); viewHolder.textView3.setText(“+item.getAge()); viewHolder.textView4.setText(item.getCreateDate()); viewHolder.imgView1.setImageResource(R.drawable.finalize); viewHolder.imgView2.setImageResource(R.drawable.yesgreen); viewHolder.imgView3.setImageResource(R.drawable.yesgreen); itemLayoutView.setBackgroundColor(Color.parseColor(“#15ffffff”); } } //用于保存对RecyclerView的每个项的引用的内部类 公共静态类ViewHolder扩展了RecyclerView.ViewHolder实现了OnClickListener{ 公共文本视图文本视图1、文本视图2、文本视图3、文本视图4、文本视图5; 公共图像视图imgView1、imgView2、imgView3、imgView4; 公共视图持有者(视图项布局视图){ 超级(itemLayoutView); textView1=(TextView)itemLayoutView.findViewById(R.id.textView1); textView2=(TextView)itemLayoutView.findViewById(R.id.textView2); textView3=(TextView)itemLayoutView.findViewById(R.id.textView3); textView4=(TextView)itemLayoutView.findViewById(R.id.textView4); textView5=(TextView)itemLayoutView.findViewById(R.id.textView5); imgView1=(ImageView)itemLayoutView.findViewById(R.id.imageView1); imgView2=(ImageView)itemLayoutView.findViewById(R.id.ImageView\u followupone); imgView3=(ImageView)itemLayoutView.findViewById(R.id.ImageView\u followuptwo); imgView4=(ImageView)itemLayoutView.findViewById(R.id.imageView2); itemLayoutView.setOnClickListener(此); } @凌驾 公共void onClick(视图v){ int i=getAdapterPosition(); SearchParms item=itemData.get(i); Toast.makeText(abc,“您选择的::”+item.getParticipantName(),3000.show(); } } //返回itemsData的大小(由布局管理器调用) @凌驾 public int getItemCount(){ 返回itemData.size(); } }
它在哪里制造问题。使用RecyclerView有任何类型的限制吗?我很想知道这件事。感谢您不要这样设置视图:

itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(
        R.layout.list_row_serch, null);
请执行以下操作:

itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(
        R.layout.list_row_serch, parent, false);

你能发布你的RecyclerView XML吗?我想你的适配器有问题。我也更新了我的适配器类@Nilesh@Gangulian我知道这不是解决方案,但我建议您不要使用列表项的权重。它的性能很差。