Android RecyclerView的学习与使用

环境

添加依赖

本文使用的是AndroidX

    implementation 'androidx.recyclerview:recyclerview:1.1.0'

基本使用

xml配置

在需要使用RecyclerView的layout添加如下代码

     <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/card_recy"
        />

新建一个item_view.xml用来设置RecyclerView中item的样式,代码中

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#FFF0F0F0"
    android:padding="5dp"
    android:gravity="bottom"
    tools:ignore="MissingDefaultResource">
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1"
        >
        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_centerVertical="true"
            android:layout_marginStart="40dp"
            android:background="@drawable/select"
            />

        <ImageView
            android:id="@+id/iv_managedata_item_check"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_centerVertical="true"
            android:layout_marginStart="40dp"
            android:src="@drawable/is_select"

            android:visibility="invisible" />

    </RelativeLayout>


    <ImageView
        android:id="@+id/iv_managedata_item_head"
        android:layout_width="72dp"
        android:layout_height="72dp"
        android:layout_marginStart="40dp"
        android:src="@mipmap/ic_launcher"
        android:layout_weight="1"
        />

    <ImageView
        android:id="@+id/iv_managedata_item_fp"
        android:layout_width="72dp"
        android:layout_height="72dp"
        android:layout_marginStart="40dp"
        android:src="@mipmap/ic_launcher"
        android:layout_weight="1"
        />

    <TextView
        android:id="@+id/tv_managedata_item_name"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="20dp"
        android:textSize="25sp" />

    <TextView
        android:id="@+id/tv_managedata_item_idcard"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="40dp"
        android:textSize="25sp"
        android:layout_weight="4"
        />

    <TextView
        android:id="@+id/tv_managedata_item_datetime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="40dp"
        android:textSize="25sp"
        android:layout_weight="1"
        />
    <!--认证状态-->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"

        />
</LinearLayout>

Java配置

首先为RecyclerVIew创建一个Adapter

public class IdCardAdapter extends RecyclerView.Adapter<IdCardAdapter.ViewHolder> {
    private List<DownloadId> downloadIdList;
    private Activity activity;
    private RequestOptions options;
    @NonNull
    @Override
    public IdCardAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, null, false);
        ViewHolder holder = new ViewHolder(itemView);
        return holder;
    }


    public IdCardAdapter(List<DownloadId> downloadIdList, Activity activity) {
        this.activity=activity;
        this.downloadIdList = downloadIdList;
        options = new RequestOptions()
                .error(R.mipmap.ic_launcher)
                .override(80,80)
                .centerCrop()
                .diskCacheStrategy(DiskCacheStrategy.DATA);
    }
    @Override
    public void onBindViewHolder(@NonNull IdCardAdapter.ViewHolder holder, int position) {
        Glide.with(activity).load(downloadIdList.get(position).getRlzp()).apply(options).into(holder.mPhoto);
        Glide.with(activity).load(downloadIdList.get(position).getZwtz()).apply(options).into(holder.mFPhoto);
        holder.mName.setText(downloadIdList.get(position).getXm());
        holder.mCardId.setText(downloadIdList.get(position).getId());
        holder.mCheck.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(downloadIdList.get(position).isCheck()){
                    holder.mCheck.setImageResource(R.drawable.is_select);
                    downloadIdList.get(position).setCheck(false);
                }else {
                    holder.mCheck.setImageResource(R.drawable.select);
                    downloadIdList.get(position).setCheck(true);
                }
            }
        });

    }

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

    }
    static class ViewHolder extends RecyclerView.ViewHolder {
        ImageView mPhoto;
        ImageView mCheck;
        ImageView mFPhoto;
        TextView mName;
        TextView mCardId;
        public ViewHolder(View view) {
            super(view);
            mPhoto = (ImageView) view.findViewById(R.id.iv_managedata_item_head);
            mFPhoto = (ImageView) view.findViewById(R.id.iv_managedata_item_fp);
            mCheck = (ImageView) view.findViewById(R.id.iv_managedata_item_check);
            mName = (TextView) view.findViewById(R.id.tv_managedata_item_name);
            mCardId = (TextView) view.findViewById(R.id.tv_managedata_item_idcard);
        }
    }
}

然后再Activity中实现,下面运用了Room框架获取数据。

public class CardInfoActivity extends AppCompatActivity {
    RecyclerView recyclerView;
    LinearLayoutManager linearLayoutManager;
    IdCardAdapter idCardAdapter;
    Card_info card_info;//Room数据库Dao
    List<DownloadId> downloadIds;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_card_info);
        recyclerView = findViewById(R.id.card_recy);
        card_info= Card_Info_Datebase.getInstance(this).getCard_InfoDao();//数据库方法
        downloadIds=card_info.selectAllInfo();
        linearLayoutManager = new LinearLayoutManager(this);
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(linearLayoutManager);
         idCardAdapter = new IdCardAdapter(downloadIds, CardInfoActivity.this);
        recyclerView.setAdapter(idCardAdapter);
        idCardAdapter.refresh(downloadIds);
    }
}

DownloadId实例,@Entity,@PrimaryKey,@Ignore为Room相关注解。想要了解Room框架可以看我另一篇文章,Android Room框架学习记录

@Entity(tableName = "card_info")
public class DownloadId {
    /**
     * 系统下发
     * 身份信息
     */
    @PrimaryKey(autoGenerate = true)
    public int id;
    private String zjhm;
    private String xm;
    private String zwtp;
    private String zwtz;
    private String rlzp;
    @Ignore
    private boolean isCheck=false;

    public boolean isCheck() {
        return isCheck;
    }

    public void setCheck(boolean check) {
        isCheck = check;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getZjhm() {
        return zjhm;
    }

    public void setZjhm(String zjhm) {
        this.zjhm = zjhm;
    }

    public String getXm() {
        return xm;
    }

    public void setXm(String xm) {
        this.xm = xm;
    }

    public String getZwtp() {
        return zwtp;
    }

    public void setZwtp(String zwtp) {
        this.zwtp = zwtp;
    }

    public String getZwtz() {
        return zwtz;
    }

    public void setZwtz(String zwtz) {
        this.zwtz = zwtz;
    }

    public String getRlzp() {
        return rlzp;
    }

    public void setRlzp(String rlzp) {
        this.rlzp = rlzp;
    }

    @Override
    public String toString() {
        return "DownloadId{" +
                "zjhm='" + zjhm + '\'' +
                ", xm='" + xm + '\'' +
                ", zwtp='" + zwtp + '\'' +
                ", zwtz='" + zwtz + '\'' +
                ", rlzp='" + rlzp + '\'' +
                '}';
    }
}

至此就可以大概实现RecyclerView的基本功能了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钢铁小朋友

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值