如何使用RecyclerView制作具有相同宽度的行的列表?

问题描述

由于某种原因,我的行的大小不同。我尝试了所有操作,但没有成功。顺便说一句,我是android的新手。

我尝试更改row.xml,但没有用:

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:cardCornerRadius="3dp"
    app:cardElevation="3dp"
    app:cardUseCompatPadding="true">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:layout_gravity="top">

        <ImageView
            android:id="@+id/imageIv"
            android:layout_width="35dp"
            android:layout_height="34dp"
            android:background="@drawable/circulo_azul"
            android:src="@drawable/transferenciablue" />

        <TextView
            android:id="@+id/titleTv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="10dp"
            android:layout_marginLeft="10dp"
            android:layout_toEndOf="@id/imageIv"
            android:layout_toRightOf="@id/imageIv"
            android:text="Title"
            android:textColor="#000"
            android:textSize="22sp"
            android:textStyle="bold" />


    </RelativeLayout>



</androidx.cardview.widget.CardView>

这是activitymain.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="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:orientation = "vertical"
    tools:context=".MainActivity"
    >

    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="100dp"
        android:id="@+id/recyclerView"/>
</LinearLayout>

带有onBindViewHolder的MyAdapter.java:

package com.example.demoapp;


import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import android.content.Context;

public class MyAdapter extends RecyclerView.Adapter<MyHolder> {
    Context c;
    ArrayList<Model> models; // this array list creates a list of arrays which parameters define in my model class

    public MyAdapter(Context c,ArrayList<Model> models) {
        this.c = c;
        this.models = models;
    }

    @NonNull
    @Override
    public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup,int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row,null); // this line inflate my row
        return new MyHolder(view); // this will return my view to holder class
    }

    @Override
    public void onBindViewHolder(@NonNull MyHolder myHolder,int i) {
        myHolder.mTitle.setText(models.get(i).getTitle()); // here i is position
        myHolder.mImaeView.setimageResource(models.get(i).getImg());

    }

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

MyHolder类:

package com.example.demoapp;

import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

public class MyHolder extends RecyclerView.ViewHolder {
    ImageView mImaeView;
    TextView mTitle;
    public MyHolder(@NonNull View itemView) {
        super(itemView);
        this.mImaeView = itemView.findViewById(R.id.imageIv);
        this.mTitle = itemView.findViewById(R.id.titleTv);
    }
}

我需要做些什么才能使它们显示成比例?谢谢

解决方法

确保您将在BindViewHolder中编写这种类型的代码:

 @Override
public folder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
    View view = LayoutInflater.from(context).inflate(R.layout.your_layout_name,parent,false);
    return new viewHolderClass(view);
}

某些时间宽度不能正确显示,因为viewGroup无法使用

,

android:layout_gravity="top"更改为android:layout_gravity="center"

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...