一,代码:
1,xml
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".activity.Recycle1Activity"> android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent"/>
两类item:无图:
android:id="@+id/textItem" android:layout_width="match_parent" android:layout_height="60dp" android:gravity="center_vertical" android:padding="16dp" android:textSize="18sp"/> 有图: android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="10dp"> android:id="@+id/userImage" android:background="#ffff00" android:layout_width="160dp" android:layout_height="160dp" android:src="@drawable/ic_launcher_foreground" /> android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" android:paddingStart="16dp" android:paddingEnd="16dp" android:gravity="center_vertical"> android:id="@+id/userId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="商品名" android:textSize="18sp" android:textColor="@android:color/black" /> android:id="@+id/userName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="描述" android:textSize="14sp" android:textColor="@android:color/darker_gray" /> 2,java model: package com.example.okdemo1.model; public class UserListItemEntity { private int id; private String name; private String image; public UserListItemEntity(int id, String name, String image) { this.id = id; this.name = name; this.image = image; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getImage() { return image; } public void setImage(String image) { this.image = image; } } activity: package com.example.okdemo1.activity; import android.os.Bundle; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.example.okdemo1.R; import com.example.okdemo1.adapter.MyRecycleAdapter; import com.example.okdemo1.model.UserListItemEntity; import java.util.ArrayList; import java.util.List; public class Recycle1Activity extends AppCompatActivity { private RecyclerView recyclerView; private MyRecycleAdapter adapter; private List @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_recycle1); recyclerView = findViewById(R.id.recyclerView); userList = new ArrayList<>(); // 添加测试数据 for (int i = 1; i <= 20; i++) { String image = ""; if (i == 3) { image="https://wx1.sinaimg.cn/mw690/9f519e8bgy1i1n60ny8bmj22yo1o0hdv.jpg"; } else if (i == 6) { image="https://wx3.sinaimg.cn/mw690/005SZ2Zygy1i1n5h61b79j30xc0l8grq.jpg"; } else { image=""; } UserListItemEntity one = new UserListItemEntity(i,"第 " + i + " 项",image); userList.add(one); } adapter = new MyRecycleAdapter(Recycle1Activity.this,userList); recyclerView.setLayoutManager(new LinearLayoutManager(this)); // 垂直列表 recyclerView.setAdapter(adapter); } } adapter: package com.example.okdemo1.adapter; import androidx.recyclerview.widget.RecyclerView; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.RequestOptions; import com.example.okdemo1.R; import com.example.okdemo1.model.UserListItemEntity; import java.util.List; public class MyRecycleAdapter extends RecyclerView.Adapter private Context context; private static final int TYPE_TEXT = 0; private static final int TYPE_IMAGE = 1; private List public MyRecycleAdapter(Context context,List this.dataList = dataList; this.context = context; } @Override public int getItemViewType(int position) { UserListItemEntity one = dataList.get(position); int id = one.getId(); System.out.println(id); if (id == 3 || id == 6){ return TYPE_IMAGE; } else { return TYPE_TEXT; } } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == TYPE_TEXT) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_text, parent, false); return new TextViewHolder(view); } else { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_text_image, parent, false); return new ImageViewHolder(view); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof TextViewHolder) { ((TextViewHolder) holder).bind(this.context,(UserListItemEntity) dataList.get(position)); } else { ((ImageViewHolder) holder).bind(this.context,(UserListItemEntity) dataList.get(position)); } } @Override public int getItemCount() { return dataList.size(); } } // ViewHolder for text item class TextViewHolder extends RecyclerView.ViewHolder { private TextView textView; public TextViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.textItem); } public void bind(Context text,UserListItemEntity one) { textView.setText(one.getName()); } } // ViewHolder for image item class ImageViewHolder extends RecyclerView.ViewHolder { private ImageView imageView; private TextView nameView; public ImageViewHolder(View itemView) { super(itemView); imageView = itemView.findViewById(R.id.userImage); nameView = itemView.findViewById(R.id.userName); } public void bind(Context context,UserListItemEntity imageItem) { nameView.setText(imageItem.getName()); //imageView. RequestOptions options = RequestOptions.fitCenterTransform(); //设置图片 Glide.with(context) .load(imageItem.getImage()) .apply(options) .diskCacheStrategy(DiskCacheStrategy.ALL) // 缓存原始图片和转换后的图片到磁盘 .skipMemoryCache(false) // 不跳过内存缓存 .into(imageView); } } 二,测试效果: