小白开发之路(2-11-4)RecyclerView

代码

主要就是修改了LInearAdapter

LinearAdapter

package com.example.myapplication.recyclerview;


import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

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

import com.bumptech.glide.Glide;
import com.example.myapplication.R;

import java.util.List;

public class LinearAdapter extends RecyclerView.Adapter<ViewHolder> {
    private Context mcontext;
//    private List<String> list;
    public LinearAdapter(Context context){
        this.mcontext=context;
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        if (viewType==0)
            //ViewHold零号
        return new LinearViewHolder(LayoutInflater.from(mcontext).inflate(R.layout.layout_linear_item,parent,false));
        else
            //ViewHold一号
            return new LinearViewHolder2(LayoutInflater.from(mcontext).inflate(R.layout.layout_linear_item2,parent,false));
    }

    @Override
    public int getItemViewType(int position) {
        //注意到onCreateViewHolder的第二个参数是viewType,即可以通过改变viewType来控制返回的ItemView
        //这里演示的通过position奇偶性其实并不需要单独列一个方法,但日后ViewType更多样,判断方法更复杂时单独提取一个方法会更好
        if(position%2==0)
            return 0;
        else
            return 1;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
        if (getItemViewType(position) == 0) {
            //ViewHold零号
            ((LinearViewHolder) holder).textView.setText("新的蕾姆已经出现");
            //加个点击事件
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(mcontext, "点击" + position, Toast.LENGTH_SHORT).show();
                }
            });
        } else {
            //ViewHold一号
            ((LinearViewHolder2) holder).textView.setText("我爱蕾姆");
            Glide.with(mcontext).load("https://imgsa.baidu.com/forum/w%3D580%3B/sign=6f952c5c77cb0a4685228b315b58f724/cb8065380cd79123f4bb5ad2a1345982b2b78039.jpg").into(((LinearViewHolder2) holder).imageView);
            //加个点击事件
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(mcontext, "点击" + position, Toast.LENGTH_SHORT).show();
                }
            });
        }
    }

    @Override
    public int getItemCount() {
        return 30;
    }

    class LinearViewHolder extends ViewHolder{
        private TextView textView;
        public LinearViewHolder(@NonNull View itemView) {
            super(itemView);
            textView=itemView.findViewById(R.id.tv_title);
        }
    }
    class LinearViewHolder2 extends ViewHolder{
        private TextView textView;
        private ImageView imageView;

        public LinearViewHolder2(@NonNull View itemView) {
            super(itemView);
            textView=itemView.findViewById(R.id.tv_title);
            imageView=itemView.findViewById(R.id.iv_image);
        }
    }
}

layout_linear_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <TextView
        android:id="@+id/tv_title"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:gravity="center"
        android:textColor="#03A9F4"
        android:textSize="20sp"
        android:text="蕾姆"
        android:background="#FFFFFF"/>
<!--layout 宽度和高度那里不同的模式会有不同的效果,可以切换试试看-->

</LinearLayout>

layout_linear_item2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center">
    <TextView
        android:id="@+id/tv_title"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:gravity="center"
        android:textColor="#03A9F4"
        android:textSize="20sp"
        android:text="蕾姆"
        android:background="#FFFFFF"/>
    <ImageView
        android:id="@+id/iv_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/colorGrey"/>
<!--layout 宽度和高度那里不同的模式会有不同的效果,可以切换试试看-->

</LinearLayout>

效果

在这里插入图片描述

一些理解

1 ViewHolder

在这里插入图片描述

2 getItemViewType

在这里插入图片描述

3 强制类型转换为子类

在这里插入图片描述
我这里的 ImageView还是选择了使用网络图片

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值