Android RecyclerVIew 列表实现 编辑、单选、全选,重磅来袭

在这里插入图片描述

在drawable文件下再创建一个shape_blue_bg_5.xml

代码如下:

<?xml version="1.0" encoding="utf-8"?>

然后是修改values文件夹下的colors.xml文件,修改原来的并增加几个颜色,

在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?>

#1F2B5D

#1F2B5D

#D81B60

#48558C

#009FE8

#1F2B5D

#020C49

#FFFFFF

#8A96A3

#F39700

再修改一下styles.xml文件

在这里插入图片描述

布局中会用到下面的图片

icon_normal.png

在这里插入图片描述

icon_choose_selected.png

在这里插入图片描述

icon_choose_default.png

在这里插入图片描述

修改activity_main.xml文件,修改后如下图所示

在这里插入图片描述

代码如下,复制粘贴即可:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android”

xmlns:app=“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:background=“@color/app_bg_color”

android:fitsSystemWindows=“true”

tools:context=“.MainActivity”>

<androidx.appcompat.widget.Toolbar

android:id=“@+id/toolbar”

android:layout_width=“match_parent”

android:layout_height=“?attr/actionBarSize”

android:background=“?attr/colorPrimary”

app:layout_constraintEnd_toEndOf=“parent”

app:layout_constraintLeft_toLeftOf=“parent”

app:layout_constraintTop_toTopOf=“parent”>

<TextView

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_gravity=“center”

android:text=“RecyclerView Demo”

android:textColor=“@color/white”

android:textSize=“18sp” />

<TextView

android:id=“@+id/tv_edit”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_gravity=“right”

android:layout_marginRight=“8dp”

android:padding=“8dp”

android:text=“编辑”

android:textColor=“@color/white”

android:textSize=“16sp” />

</androidx.appcompat.widget.Toolbar>

<RelativeLayout

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:layout_below=“@+id/toolbar”

android:layout_above=“@+id/lay_bottom”>

<LinearLayout

android:id=“@+id/rv_normal_show”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:gravity=“center”

android:orientation=“vertical”>

<ImageView

android:layout_width=“264dp”

android:layout_height=“140dp”

android:background=“@mipmap/icon_normal” />

<TextView

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_marginTop=“@dimen/dp_10”

android:text=“空空如也”

android:textColor=“@color/gray”

android:textSize=“18sp” />

<com.scwang.smartrefresh.layout.SmartRefreshLayout

android:id=“@+id/refresh”

android:layout_width=“match_parent”

android:layout_height=“match_parent”>

<androidx.recyclerview.widget.RecyclerView

android:id=“@+id/rv”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:padding=“12dp”

android:visibility=“gone” />

</com.scwang.smartrefresh.layout.SmartRefreshLayout>

<LinearLayout

android:id=“@+id/lay_bottom”

android:layout_width=“match_parent”

android:layout_height=“50dp”

android:layout_alignParentBottom=“true”

android:background=“@color/colorPrimary”

android:orientation=“horizontal”

android:visibility=“gone”>

<TextView

android:id=“@+id/tv_check_all”

android:layout_width=“0dp”

android:layout_height=“match_parent”

android:layout_weight=“1”

android:foreground=“@drawable/bg_white”

android:gravity=“center”

android:text=“全选”

android:textColor=“@color/white”

android:textSize=“@dimen/sp_14” />

<View

android:layout_width=“1dp”

android:layout_height=“match_parent”

android:layout_marginTop=“12dp”

android:layout_marginBottom=“12dp”

android:background=“@color/app_bg_color” />

<TextView

android:id=“@+id/tv_delete”

android:layout_width=“0dp”

android:layout_height=“match_parent”

android:layout_weight=“1”

android:foreground=“@drawable/bg_white”

android:gravity=“center”

android:text=“删除”

android:textColor=“@color/yellow”

android:textSize=“14sp” />

然后是创建一个数据实体DataResponse.java

在这里插入图片描述

代码如下,复制粘贴即可:

package com.llw.recyclerviewusedemo;

import java.util.List;

/**

  • 数据实体

*/

public class DataResponse {

/**

  • data : [{“_id”:“5e959250808d6d2fe6b56eda”,“author”:“鸢媛”,“category”:“Girl”,“createdAt”:“2020-05-25 08:00:00”,“desc”:“与其安慰自己平凡可贵,\n不如拼尽全力活得漂亮。 \u200b \u200b\u200b\u200b\u200b”,“images”:[“http://gank.io/images/f4f6d68bf30147e1bdd4ddbc6ad7c2a2”],“likeCounts”:0,“publishedAt”:“2020-05-25 08:00:00”,“stars”:1,“title”:“第96期”,“type”:“Girl”,“url”:“http://gank.io/images/f4f6d68bf30147e1bdd4ddbc6ad7c2a2”,“views”:131},{“_id”:“5e95923f808d6d2fe6b56ed8”,“author”:“鸢媛”,“category”:“Girl”,“createdAt”:“2020-05-24 08:00:00”,“desc”:“这世界总有人在笨拙地爱着你,想把全部的温柔都给你。 \u200b\u200b\u200b\u200b”,“images”:[“http://gank.io/images/dc75cbde1d98448183e2f9514b4d1320”],“likeCounts”:0,“publishedAt”:“2020-05-24 08:00:00”,“stars”:1,“title”:“第95期”,“type”:“Girl”,“url”:“http://gank.io/images/dc75cbde1d98448183e2f9514b4d1320”,“views”:133},{“_id”:“5e95922e808d6d2fe6b56ed6”,“author”:“鸢媛”,“category”:“Girl”,“createdAt”:“2020-05-23 08:00:00”,“desc”:“陪伴本来就是这世界上最了不起的安慰\u200b。”,“images”:[“http://gank.io/images/6b2efa591564475fb8bc32291fb0007c”],“likeCounts”:0,“publishedAt”:“2020-05-23 08:00:00”,“stars”:1,“title”:“第94期”,“type”:“Girl”,“url”:“http://gank.io/images/6b2efa591564475fb8bc32291fb0007c”,“views”:135},{“_id”:“5e959200ee6ba981da2af34d”,“author”:“鸢媛”,“category”:“Girl”,“createdAt”:“2020-05-22 08:00:00”,“desc”:“长不过执念,短不过善变。”,“images”:[“http://gank.io/images/d6bba8cf5b8c40f9ad229844475e9149”],“likeCounts”:0,“publishedAt”:“2020-05-22 08:00:00”,“stars”:1,“title”:“第93期”,“type”:“Girl”,“url”:“http://gank.io/images/d6bba8cf5b8c40f9ad229844475e9149”,“views”:192},{“_id”:“5e9591dcee6ba981da2af34b”,“author”:“鸢媛”,“category”:“Girl”,“createdAt”:“2020-05-21 08:00:00”,“desc”:“无论多么艰难的现在,终会翻篇。\n朝未来大步向前吧,别丧,别止步。”,“images”:[“http://gank.io/images/9fa43020cf724c69842eec3e13f6d21c”],“likeCounts”:1,“publishedAt”:“2020-05-21 08:00:00”,“stars”:1,“title”:“第92期”,“type”:“Girl”,“url”:“http://gank.io/images/9fa43020cf724c69842eec3e13f6d21c”,“views”:176},{“_id”:“5e9591c60bd5529b54e712af”,“author”:“鸢媛”,“category”:“Girl”,“createdAt”:“2020-05-20 08:00:00”,“desc”:“希望下一次,能喜欢上一个也喜欢自己的人 \u200b\u200b\u200b\u200b。”,“images”:[“http://gank.io/images/d237f507bf1946d2b0976e581f8aab9b”],“likeCounts”:0,“publishedAt”:“2020-05-20 08:00:00”,“stars”:1,“title”:“第91期”,“type”:“Girl”,“url”:“http://gank.io/images/d237f507bf1946d2b0976e581f8aab9b”,“views”:180},{“_id”:“5e9591b6808d6d2fe6b56ed5”,“author”:“鸢媛”,“category”:“Girl”,“createdAt”:“2020-05-19 08:00:00”,“desc”:“这个世界上,\n有些人有多冷漠,\n有些人就有多温暖,\n希望你总会遇到那些温暖对你的人。”,“images”:[“http://gank.io/images/25d3e3db2c1248bb917c09dc4f50a46f”],“likeCounts”:0,“publishedAt”:“2020-05-19 08:00:00”,“stars”:1,“title”:“第90期”,“type”:“Girl”,“url”:“http://gank.io/images/25d3e3db2c1248bb917c09dc4f50a46f”,“views”:255},{“_id”:“5e9591a2ee6ba981da2af34a”,“author”:“鸢媛”,“category”:“Girl”,“createdAt”:“2020-05-18 08:00:00”,“desc”:“以前对你的喜欢,\n是见你,念你,陪伴你。\n现在对你的喜欢,\n是不问,不看,不叨扰。”,“images”:[“http://gank.io/images/19c99c447e0a40a6b3ff89951957cfb1”],“likeCounts”:0,“publishedAt”:“2020-05-18 08:00:00”,“stars”:1,“title”:“第89期”,“type”:“Girl”,“url”:“http://gank.io/images/19c99c447e0a40a6b3ff89951957cfb1”,“views”:240},{“_id”:“5e959197808d6d2fe6b56ed4”,“author”:“鸢媛”,“category”:“Girl”,“createdAt”:“2020-05-17 08:00:00”,“desc”:“只要结局是喜剧,过程你要我怎么哭都行,幸福可以来的慢一些,\n只要它是真的,如果最后能在一起,晚点我真的无所谓的。”,“images”:[“http://gank.io/images/f0c192e3e335400db8a709a07a891b2e”],“likeCounts”:0,“publishedAt”:“2020-05-17 08:00:00”,“stars”:1,“title”:“第88期”,“type”:“Girl”,“url”:“http://gank.io/images/f0c192e3e335400db8a709a07a891b2e”,“views”:275},{“_id”:“5e95915f808d6d2fe6b56ed3”,“author”:“鸢媛”,“category”:“Girl”,“createdAt”:“2020-05-16 08:00:00”,“desc”:“若不是情深似海,思念又怎会泛滥成灾。”,“images”:[“http://gank.io/images/bdb35e4b3c0045c799cc7a494a3db3e0”],“likeCounts”:0,“publishedAt”:“2020-05-16 08:00:00”,“stars”:1,“title”:“第87期”,“type”:“Girl”,“url”:“http://gank.io/images/bdb35e4b3c0045c799cc7a494a3db3e0”,“views”:437}]

  • page : 1

  • page_count : 10

  • status : 100

  • total_counts : 96

*/

private int page;

private int page_count;

private int status;

private int total_counts;

private List data;

public int getPage() {

return page;

}

public void setPage(int page) {

this.page = page;

}

public int getPage_count() {

return page_count;

}

public void setPage_count(int page_count) {

this.page_count = page_count;

}

public int getStatus() {

return status;

}

public void setStatus(int status) {

this.status = status;

}

public int getTotal_counts() {

return total_counts;

}

public void setTotal_counts(int total_counts) {

this.total_counts = total_counts;

}

public List getData() {

return data;

}

public void setData(List data) {

this.data = data;

}

public static class DataBean {

/**

  • _id : 5e959250808d6d2fe6b56eda

  • author : 鸢媛

  • category : Girl

  • createdAt : 2020-05-25 08:00:00

  • desc : 与其安慰自己平凡可贵,

不如拼尽全力活得漂亮。 ​ ​​​​

  • images : [“http://gank.io/images/f4f6d68bf30147e1bdd4ddbc6ad7c2a2”]

  • likeCounts : 0

  • publishedAt : 2020-05-25 08:00:00

  • stars : 1

  • title : 第96期

  • type : Girl

  • url : http://gank.io/images/f4f6d68bf30147e1bdd4ddbc6ad7c2a2

  • views : 131

*/

private String _id;

private String author;

private String category;

private String createdAt;

private String desc;

private int likeCounts;

private String publishedAt;

private int stars;

private String title;

private String type;

private String url;

private int views;

private List images;

private boolean select = false;

public String get_id() {

return _id;

}

public void set_id(String _id) {

this._id = _id;

}

public String getAuthor() {

return author;

}

public void setAuthor(String author) {

this.author = author;

}

public String getCategory() {

return category;

}

public void setCategory(String category) {

this.category = category;

}

public String getCreatedAt() {

return createdAt;

}

public void setCreatedAt(String createdAt) {

this.createdAt = createdAt;

}

public String getDesc() {

return desc;

}

public void setDesc(String desc) {

this.desc = desc;

}

public int getLikeCounts() {

return likeCounts;

}

public void setLikeCounts(int likeCounts) {

this.likeCounts = likeCounts;

}

public String getPublishedAt() {

return publishedAt;

}

public void setPublishedAt(String publishedAt) {

this.publishedAt = publishedAt;

}

public int getStars() {

return stars;

}

public void setStars(int stars) {

this.stars = stars;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

public String getUrl() {

return url;

}

public void setUrl(String url) {

this.url = url;

}

public int getViews() {

return views;

}

public void setViews(int views) {

this.views = views;

}

public List getImages() {

return images;

}

public void setImages(List images) {

this.images = images;

}

public boolean isSelect() {

return select;

}

public void setSelect(boolean select) {

this.select = select;

}

}

}

再创建一个JsonData.java,存放用于转换的JSON数据

在这里插入图片描述

代码如下,复制粘贴即可:

package com.llw.recyclerviewusedemo;

public class JsonData {

public static String JSON = “{“data”:[{”_id":“5e959250808d6d2fe6b56eda”,“author”:“\u9e22\u5a9b”,“category”:“Girl”,“createdAt”:“2020-05-25 08:00:00”,“desc”:“\u4e0e\u5176\u5b89\u6170\u81ea\u5df1\u5e73\u51e1\u53ef\u8d35\uff0c\n\u4e0d\u5982\u62fc\u5c3d\u5168\u529b\u6d3b\u5f97\u6f02\u4eae\u3002 \u200b \u200b\u200b\u200b\u200b”,“images”:[“http://gank.io/images/f4f6d68bf30147e1bdd4ddbc6ad7c2a2”],“likeCounts”:0,“publishedAt”:“2020-05-25 08:00:00”,“stars”:1,“title”:“\u7b2c96\u671f”,“type”:“Girl”,“url”:“http://gank.io/images/f4f6d68bf30147e1bdd4ddbc6ad7c2a2”,“views”:131},{“_id”:“5e95923f808d6d2fe6b56ed8”,“author”:“\u9e22\u5a9b”,“category”:“Girl”,“createdAt”:“2020-05-24 08:00:00”,“desc”:“\u8fd9\u4e16\u754c\u603b\u6709\u4eba\u5728\u7b28\u62d9\u5730\u7231\u7740\u4f60\uff0c\u60f3\u628a\u5168\u90e8\u7684\u6e29\u67d4\u90fd\u7ed9\u4f60\u3002 \u200b\u200b\u200b\u200b”,“images”:[“http://gank.io/images/dc75cbde1d98448183e2f9514b4d1320”],“likeCounts”:0,“publishedAt”:“2020-05-24 08:00:00”,“stars”:1,“title”:“\u7b2c95\u671f”,“type”:“Girl”,“url”:“http://gank.io/images/dc75cbde1d98448183e2f9514b4d1320”,“views”:133},{“_id”:“5e95922e808d6d2fe6b56ed6”,“author”:“\u9e22\u5a9b”,“category”:“Girl”,“createdAt”:“2020-05-23 08:00:00”,“desc”:“\u966a\u4f34\u672c\u6765\u5c31\u662f\u8fd9\u4e16\u754c\u4e0a\u6700\u4e86\u4e0d\u8d77\u7684\u5b89\u6170\u200b\u3002”,“images”:[“http://gank.io/images/6b2efa591564475fb8bc32291fb0007c”],“likeCounts”:0,“publishedAt”:“2020-05-23 08:00:00”,“stars”:1,“title”:“\u7b2c94\u671f”,“type”:“Girl”,“url”:“http://gank.io/images/6b2efa591564475fb8bc32291fb0007c”,“views”:135},{“_id”:“5e959200ee6ba981da2af34d”,“author”:“\u9e22\u5a9b”,“category”:“Girl”,“createdAt”:“2020-05-22 08:00:00”,“desc”:“\u957f\u4e0d\u8fc7\u6267\u5ff5\uff0c\u77ed\u4e0d\u8fc7\u5584\u53d8\u3002”,“images”:[“http://gank.io/images/d6bba8cf5b8c40f9ad229844475e9149”],“likeCounts”:0,“publishedAt”:“2020-05-22 08:00:00”,“stars”:1,“title”:“\u7b2c93\u671f”,“type”:“Girl”,“url”:“http://gank.io/images/d6bba8cf5b8c40f9ad229844475e9149”,“views”:192},{“_id”:“5e9591dcee6ba981da2af34b”,“author”:“\u9e22\u5a9b”,“category”:“Girl”,“createdAt”:“2020-05-21 08:00:00”,“desc”:“\u65e0\u8bba\u591a\u4e48\u8270\u96be\u7684\u73b0\u5728\uff0c\u7ec8\u4f1a\u7ffb\u7bc7\u3002\n\u671d\u672a\u6765\u5927\u6b65\u5411\u524d\u5427\uff0c\u522b\u4e27\uff0c\u522b\u6b62\u6b65\u3002”,“images”:[“http://gank.io/images/9fa43020cf724c69842eec3e13f6d21c”],“likeCounts”:1,“publishedAt”:“2020-05-21 08:00:00”,“stars”:1,“title”:“\u7b2c92\u671f”,“type”:“Girl”,“url”:“http://gank.io/images/9fa43020cf724c69842eec3e13f6d21c”,“views”:176},{“_id”:“5e9591c60bd5529b54e712af”,“author”:“\u9e22\u5a9b”,“category”:“Girl”,“createdAt”:“2020-05-20 08:00:00”,“desc”:“\u5e0c\u671b\u4e0b\u4e00\u6b21\uff0c\u80fd\u559c\u6b22\u4e0a\u4e00\u4e2a\u4e5f\u559c\u6b22\u81ea\u5df1\u7684\u4eba \u200b\u200b\u200b\u200b\u3002”,“images”:[“http://gank.io/images/d237f507bf1946d2b0976e581f8aab9b”],“likeCounts”:0,“publishedAt”:“2020-05-20 08:00:00”,“stars”:1,“title”:“\u7b2c91\u671f”,“type”:“Girl”,“url”:“http://gank.io/images/d237f507bf1946d2b0976e581f8aab9b”,“views”:180},{“_id”:“5e9591b6808d6d2fe6b56ed5”,“author”:“\u9e22\u5a9b”,“category”:“Girl”,“createdAt”:“2020-05-19 08:00:00”,“desc”:“\u8fd9\u4e2a\u4e16\u754c\u4e0a\uff0c\n\u6709\u4e9b\u4eba\u6709\u591a\u51b7\u6f20\uff0c\n\u6709\u4e9b\u4eba\u5c31\u6709\u591a\u6e29\u6696\uff0c\n\u5e0c\u671b\u4f60\u603b\u4f1a\u9047\u5230\u90a3\u4e9b\u6e29\u6696\u5bf9\u4f60\u7684\u4eba\u3002”,“images”:[“http://gank.io/images/25d3e3db2c1248bb917c09dc4f50a46f”],“likeCounts”:0,“publishedAt”:“2020-05-19 08:00:00”,“stars”:1,“title”:“\u7b2c90\u671f”,“type”:“Girl”,“url”:“http://gank.io/images/25d3e3db2c1248bb917c09dc4f50a46f”,“views”:255},{“_id”:“5e9591a2ee6ba981da2af34a”,“author”:“\u9e22\u5a9b”,“category”:“Girl”,“createdAt”:“2020-05-18 08:00:00”,“desc”:“\u4ee5\u524d\u5bf9\u4f60\u7684\u559c\u6b22\uff0c\n\u662f\u89c1\u4f60\uff0c\u5ff5\u4f60\uff0c\u966a\u4f34\u4f60\u3002\n\u73b0\u5728\u5bf9\u4f60\u7684\u559c\u6b22\uff0c\n\u662f\u4e0d\u95ee\uff0c\u4e0d\u770b\uff0c\u4e0d\u53e8\u6270\u3002”,“images”:[“http://gank.io/images/19c99c447e0a40a6b3ff89951957cfb1”],“likeCounts”:0,“publishedAt”:“2020-05-18 08:00:00”,“stars”:1,“title”:“\u7b2c89\u671f”,“type”:“Girl”,“url”:“http://gank.io/images/19c99c447e0a40a6b3ff89951957cfb1”,“views”:240},{“_id”:“5e959197808d6d2fe6b56ed4”,“author”:“\u9e22\u5a9b”,“category”:“Girl”,“createdAt”:“2020-05-17 08:00:00”,“desc”:“\u53ea\u8981\u7ed3\u5c40\u662f\u559c\u5267\uff0c\u8fc7\u7a0b\u4f60\u8981\u6211\u600e\u4e48\u54ed\u90fd\u884c\uff0c\u5e78\u798f\u53ef\u4ee5\u6765\u7684\u6162\u4e00\u4e9b\uff0c\n\u53ea\u8981\u5b83\u662f\u771f\u7684\uff0c\u5982\u679c\u6700\u540e\u80fd\u5728\u4e00\u8d77\uff0c\u665a\u70b9\u6211\u771f\u7684\u65e0\u6240\u8c13\u7684\u3002”,“images”:[“http://gank.io/images/f0c192e3e335400db8a709a07a891b2e”],“likeCounts”:0,“publishedAt”:“2020-05-17 08:00:00”,“stars”:1,“title”:“\u7b2c88\u671f”,“type”:“Girl”,“url”:“http://gank.io/images/f0c192e3e335400db8a709a07a891b2e”,“views”:275},{“_id”:“5e95915f808d6d2fe6b56ed3”,“author”:“\u9e22\u5a9b”,“category”:“Girl”,“createdAt”:“2020-05-16 08:00:00”,“desc”:“\u82e5\u4e0d\u662f\u60c5\u6df1\u4f3c\u6d77\uff0c\u601d\u5ff5\u53c8\u600e\u4f1a\u6cdb\u6ee5\u6210\u707e\u3002”,“images”:[“http://gank.io/images/bdb35e4b3c0045c799cc7a494a3db3e0”],“likeCounts”:0,“publishedAt”:“2020-05-16 08:00:00”,“stars”:1,“title”:“\u7b2c87\u671f”,“type”:“Girl”,“url”:“http://gank.io/images/bdb35e4b3c0045c799cc7a494a3db3e0”,“views”:437}],“page”:1,“page_count”:10,“status”:100,“total_counts”:96}";

}

④ 创建列表的item布局文件

layout文件下创建item_data_list.xml布局文件

在这里插入图片描述

在这里插入图片描述

代码如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

xmlns:app=“http://schemas.android.com/apk/res-auto”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:layout_marginBottom=“12dp”

android:orientation=“vertical”>

<LinearLayout

android:id=“@+id/item_data”

android:foreground=“@drawable/bg_white”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:background=“@drawable/shape_blue_bg_5”

android:gravity=“center_vertical”

android:orientation=“horizontal”

android:padding=“12dp”>

<ImageView

android:id=“@+id/iv_check”

android:layout_width=“20dp”

android:layout_height=“20dp”

android:layout_marginRight=“12dp”

android:background=“@mipmap/icon_choose_default”

android:button=“@null” />

<ImageView

android:id=“@+id/iv_img”

android:layout_width=“150dp”

android:layout_height=“200dp”

android:background=“@drawable/ic_launcher_background”

android:scaleType=“centerCrop” />

<TextView

android:id=“@+id/tv_video_info”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_marginLeft=“12dp”

android:text=“测试数据”

android:textColor=“@color/white”

android:textSize=“16sp” />

⑤ 列表适配器

创建一个适配器DataAdapter.java

在这里插入图片描述

代码如下:

package com.llw.recyclerviewusedemo;

import android.view.View;

import android.widget.ImageView;

import androidx.annotation.Nullable;

import com.bumptech.glide.Glide;

import com.chad.library.adapter.base.BaseQuickAdapter;

import com.chad.library.adapter.base.BaseViewHolder;

import java.util.List;

/**

  • 适配器

*/

public class DataAdapter extends BaseQuickAdapter<DataResponse.DataBean, BaseViewHolder> {

private static final int STATE_DEFAULT = 0;//默认状态

int mEditMode = STATE_DEFAULT;

public DataAdapter(int layoutResId, @Nullable List<DataResponse.DataBean> data) {

super(layoutResId, data);

}

@Override

protected void convert(BaseViewHolder helper, DataResponse.DataBean item) {

//Glide加载网络图片

Glide.with(mContext).load(item.getUrl()).into((ImageView) helper.getView(R.id.iv_img));

//TextView赋值

helper.setText(R.id.tv_video_info, item.getAuthor());

helper.addOnClickListener(R.id.item_data);//添加item点击事件

if (mEditMode == STATE_DEFAULT) {

//默认不显示

helper.getView(R.id.iv_check).setVisibility(View.GONE);

} else {

//显示 显示之后再做点击之后的判断

helper.getView(R.id.iv_check).setVisibility(View.VISIBLE);

if (item.isSelect()) {//点击时,true 选中

helper.getView(R.id.iv_check).setBackgroundResource(R.mipmap.icon_choose_selected);

} else {//false 取消选中

helper.getView(R.id.iv_check).setBackgroundResource(R.mipmap.icon_choose_default);

}

}

}

/**

  • 设置编辑状态 接收Activity中传递的值,并改变Adapter的状态

*/

public void setEditMode(int editMode) {

mEditMode = editMode;

notifyDataSetChanged();//刷新

}

}

⑥ 主要逻辑编写

进入到MainActivity.java

这里绑定一些控件并声明一些需要用到的变量

在这里插入图片描述

初始化列表数据

//初始化列表数据

private void initList() {

mAdapter = new DataAdapter(R.layout.item_data_list, mList);//绑定视图和数据

rv.setLayoutManager(new LinearLayoutManager(this));//设置线性布局管理器

rv.setAdapter(mAdapter);//设置适配器

Gson gson = new Gson();

DataResponse dataBean = gson.fromJson(JsonData.JSON, DataResponse.class);//解析数据

List<DataResponse.DataBean> resultsBeans = dataBean.getData();

if (resultsBeans.size() > 0) {

mList.clear();

mList.addAll(resultsBeans);

mAdapter.notifyDataSetChanged();//刷新数据

rv.setVisibility(View.VISIBLE);

rvNormalShow.setVisibility(View.GONE);

} else {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

最后

针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。
(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。
Android进阶视频+面试资料部分截图

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-HtrUypYA-1712604417943)]
[外链图片转存中…(img-4c3Ldkjk-1712604417943)]
[外链图片转存中…(img-bIZrize3-1712604417943)]
[外链图片转存中…(img-wiSdZULh-1712604417944)]
[外链图片转存中…(img-il5AVcTI-1712604417944)]
[外链图片转存中…(img-MO8SpqOl-1712604417944)]
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-pelzKKcb-1712604417945)]

最后

针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。
(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。
[外链图片转存中…(img-BhTcvIXZ-1712604417945)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-RvlZEzp0-1712604417945)]

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android RecyclerView 是一种强大的用于显示列表数据的视图组件,可以通过它来实现编写、单选全选、删除等各种操作。以下是实现这些功能的一种可能的方式: 1. 编辑功能:为每个列表项添加一个编辑按钮,当用户点击编辑按钮时,进入编辑模式。可以通过设置标志位来控制是否进入编辑状态,更新列表项的UI以显示编辑状态。 2. 单选全选功能:为每个列表项添加一个复选框,并在顶部或底部添加一个全选的复选框。当用户点击复选框时,更新复选框的状态,并根据选择的状态进行相应的操作。 3. 删除功能:为每个列表项添加一个删除按钮或者长按列表项触发删除操作。当用户点击删除按钮或长按列表项时,从数据源中删除该项,并更新RecyclerView的显示。 4. 动画效果:可以为RecyclerView的添加、删除操作添加动画效果,以提升用户的操作体验。可以通过使用RecyclerView的默认动画或自定义动画来实现。 一个例子是,当用户点击删除按钮时,可以使用`ItemAnimator`类中提供的默认动画效果,如`DefaultItemAnimator`,它会在删除时提供淡出动画效果,给用户一个直观的反馈。 以上实现方式只是其中的一种,具体实现取决于具体的应用需求和设计风格。但总的来说,通过设置复选框、按钮等视图组件来实现功能,并结合数据源的更新和RecyclerView的适配器的刷新来完成列表编辑单选全选、删除等功能,最后通过动画效果来提升用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值