IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Recylerview(一)不添加点击事件的 -> 正文阅读

[移动开发]Recylerview(一)不添加点击事件的


前言:本文主要记录学习Recylerview的基本概念以及使用方法。

Recylerview的概念

RecycleView是Android5.0后谷歌推出的一个用于在有限的窗口中展示大量数据集的控件,位于support-v7包中。由于目前androidx已经取代了supprot包,因此在此推荐大家使用Androidx的包。
Recylerview是一个和listView有些相似的列表结构控件,可以实现一些基本的列表的显示及事件内容。在谷歌Android官网,给Recylerview的描述是:Recylerview微件是ListView的更高级、灵活版本。
原因: RecyclerView可以自定义布局管理器来决定item的排布规则。比如LinearLayoutManager、GridLayoutManager、StaggeredGridLayoutManager 等。

Recylerview的优点

  1. 支持局部刷新。
  2. 可以自定义item增删时的动画。
  3. 能够实现item拖拽和侧滑删除等功能。
  4. 默认已实现View的复用,而且回收机制更加完善。

Recylerview的使用

1.包引入

在module下的build.gradle文件中引入依赖包。

    implementation 'androidx.recyclerview:recyclerview:1.1.0'

2.设置布局文件

主要包括引入的布局文件将RecyclerView作为一个控件进行使用,还需要有item的布局文件进行显示列表各项内容。

Recyclerview在activity或者fragment中使用。布局文件代码如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    tools:context=".MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/RecyclerList"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

列表中item显示内容的布局文件代码如下:

<?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="match_parent"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        
        <TextView
            android:layout_weight="3"
            android:id="@+id/item_id"
            android:layout_marginTop="20dp"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="miaowu"
            android:textSize="20sp"/>
            
        <Button
            android:id="@+id/item_btn"
            android:layout_marginTop="20dp"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="我喜欢"/>     
                 
    </LinearLayout>
</LinearLayout>

3.adapter设置

设置item里的数据类,并且添加adapter类,设置item对应的类。

首先定义item的数据类:

public class fruits {
    String name ;
    String btn_item;

    public fruits(String name, String btn_item) {
        this.name = name;
        this.btn_item = btn_item;
    }

    public fruits(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getBtn_item() {
        return btn_item;
    }

    public void setBtn_item(String btn_item) {
        this.btn_item = btn_item;
    }

    @Override
    public String toString() {
        return "fruits{" +
                "name='" + name + '\'' +
                ", btn_item='" + btn_item + '\'' +
                '}';
    }
}

添加对应的adapter类:

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

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

import com.duanjiao.recylerviewdemo.R;
import com.duanjiao.recylerviewdemo.unity.fruits;

import java.util.List;

public class RecyclerAdpater extends RecyclerView.Adapter<RecyclerAdpater.ViewHolder>{
    private List<fruits> fruits_List;
    public RecyclerAdpater(List<fruits> fruits_List)
    {
        this.fruits_List = fruits_List;
    }

    @NonNull
    @Override
    /**
     * 将item.xml实例化,并以ViewHolder的形式呈现
     */
    public RecyclerAdpater.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
        ViewHolder viewHolder = new ViewHolder(itemView);
        return viewHolder;
    }

    /**
     * 在初始和滑动RecyclerView时,给item里面的子控件赋值。
     * @param holder
     * @param position
     */
    @Override
    public void onBindViewHolder(@NonNull RecyclerAdpater.ViewHolder holder, int position) {
        holder.name.setText(fruits_List.get(position).getName());
        holder.btn_item.setText(String.valueOf(fruits_List.get(position).getBtn_item()));

    }

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


    class ViewHolder  extends RecyclerView.ViewHolder{
        TextView name;
        Button btn_item;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            this.name = itemView.findViewById(R.id.item_name);
            this.btn_item = itemView.findViewById(R.id.item_btn);

        }
    }
}

4.设置adapter和LayoutManager

主活动代码如下:

package com.duanjiao.recylerviewdemo;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;

import com.duanjiao.recylerviewdemo.adapter.RecyclerAdpater;
import com.duanjiao.recylerviewdemo.unity.fruits;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private RecyclerAdpater recyclerAdapter;
    private LinearLayoutManager linearLayoutManager;
    private List<fruits> fruits_List;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initData();
        init();
    }

    /**
     * 实例化RecyclerView,设置LayoutManager和Adapter
     */
    private void init() {
        //绑定view
        recyclerView = findViewById(R.id.RecyclerList);
        //实例化线性布局管理器
        linearLayoutManager = new LinearLayoutManager(this);
        //设置布局管理器
        recyclerView.setLayoutManager(linearLayoutManager);
        //实例化适配器
        recyclerAdapter = new RecyclerAdpater(fruits_List);
        //设置适配器
        recyclerView.setAdapter(recyclerAdapter);
    }

    /**
     * 初始化数据
     */
    private void initData() {
        fruits_List = new ArrayList<>(20);
        fruits_List.add(new fruits("苹果","我喜欢"));
        fruits_List.add(new fruits("香蕉","我喜欢"));
        fruits_List.add(new fruits("菠萝","我喜欢"));
        fruits_List.add(new fruits("圣女果","我喜欢"));
        fruits_List.add(new fruits("榴莲","我喜欢"));
        fruits_List.add(new fruits("桃子","我bu喜欢"));
        fruits_List.add(new fruits("火龙果","我喜欢"));
        fruits_List.add(new fruits("红烧翅膀","我喜欢"));
        fruits_List.add(new fruits("西瓜","我喜欢"));
        fruits_List.add(new fruits("葡萄","我喜欢"));
        fruits_List.add(new fruits("苹果","我喜欢"));
        fruits_List.add(new fruits("香蕉","我喜欢"));
        fruits_List.add(new fruits("菠萝","我喜欢"));
        fruits_List.add(new fruits("圣女果","我喜欢"));
        fruits_List.add(new fruits("榴莲","我喜欢"));
        fruits_List.add(new fruits("桃子","我喜欢"));
        fruits_List.add(new fruits("火龙果","我喜欢"));
        fruits_List.add(new fruits("红烧翅膀","我喜欢"));
        fruits_List.add(new fruits("西瓜","我喜欢"));
        fruits_List.add(new fruits("葡萄","我喜欢"));
    }


}
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-18 12:49:12  更:2021-08-18 12:50:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:46:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码