这次是要在之前实现的Fragment框架中添加RecycleView控件,用于实现下拉列表、瀑布流、上拉下拉刷新的功能。

先来介绍一下什么是RecycleView:
这一段是来源于网上的资料
【Android 控件 RecyclerView】
概述
从Android 5.0开始,谷歌公司推出了一个用于大量数据展示的新控件RecylerView,可以用来代替传统的ListView,更加强大和灵活。RecyclerView的官方定义如下:
A flexible view for providing a limited window into a large data set.
从定义可以看出,flexible(可扩展性)是RecyclerView的特点。
RecyclerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,这一点从它的名字Recyclerview即回收view也可以看出。

RecyclerView的优点
RecyclerView并不会完全替代ListView(这点从ListView没有被标记为@Deprecated可以看出),两者的使用场景不一样。但是RecyclerView的出现会让很多开源项目被废弃,例如横向滚动的ListView, 横向滚动的GridView, 瀑布流控件,因为RecyclerView能够实现所有这些功能。

RecylerView相对于ListView的优点罗列如下:
RecyclerView封装了viewholder的回收复用,也就是说RecyclerView标准化了ViewHolder,编写Adapter面向的是ViewHolder而不再是View了,复用的逻辑被封装了,写起来更加简单。
直接省去了listview中convertView.setTag(holder)和convertView.getTag()这些繁琐的步骤。
提供了一种插拔式的体验,高度的解耦,异常的灵活,针对一个Item的显示RecyclerView专门抽取出了相应的类,来控制Item的显示,使其的扩展性非常强。

先看看完成的成果吧


这个我实现了两个功能,一个是滑动功能,一个是点击返回功能

首先是要添加一个适配器
package com.example.shibin;

import android.content.Context;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

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

import java.util.List;

public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder> {
private List mList;
private Context mContext;

public HomeAdapter(Context mContext, List<String> mList) {this.mContext = mContext;this.mList = mList;
}@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View itemView = LayoutInflater.from(mContext).inflate(R.layout.tab01_recycle_item,parent,false);return new MyViewHolder(itemView);
}@Override
public void onBindViewHolder(MyViewHolder holder, int position) {holder.nametv.setText(mList.get(position));final String content = mList.get(position);String stickyData = mList.get(position);holder.nametv.setText(stickyData);if (position == 0) {holder.nametv.setVisibility(View.VISIBLE);holder.nametv.setText(stickyData);holder.itemView.setTag(1);} else {if (!TextUtils.equals(stickyData, mList.get(position - 1))) {holder.nametv.setVisibility(View.VISIBLE);holder.nametv.setText(stickyData);holder.itemView.setTag(2);} else {holder.nametv.setVisibility(View.GONE);holder.itemView.setTag(3);}}holder.itemView.setContentDescription(stickyData);holder.itemView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(mContext, "你选择了: " + content, Toast.LENGTH_SHORT).show();}});}@Override
public int getItemCount() {return mList.size();
}static class MyViewHolder extends RecyclerView.ViewHolder {private TextView nametv;public MyViewHolder(View itemView) {super(itemView);nametv = itemView.findViewById(R.id.tab01_header_view);}
}

}
然后为了显示新建的RecycleView建立一个item.xml

单独显示顶部悬浮的标题栏

添加列表显示数据,建立一个可以被选择的LinearLayout

修改一下需要修改的tab中的Fragment.java文件,例如
package com.example.shibin;

import android.os.Bundle;

import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

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

/**

  • A simple {@link Fragment} subclass.

  • Use the {@link WeixinFragment#newInstance} factory method to

  • create an instance of this fragment.
    */
    public class WeixinFragment extends Fragment {

    private List mList;

    private View view;

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = “param1”;
    private static final String ARG_PARAM2 = “param2”;

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public WeixinFragment() {
    // Required empty public constructor
    }

    // TODO: Rename and change types and number of parameters
    public static WeixinFragment newInstance(String param1, String param2) {
    WeixinFragment fragment = new WeixinFragment();
    Bundle args = new Bundle();
    args.putString(ARG_PARAM1, param1);
    args.putString(ARG_PARAM2, param2);
    fragment.setArguments(args);
    return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
    mParam1 = getArguments().getString(ARG_PARAM1);
    mParam2 = getArguments().getString(ARG_PARAM2);
    }
    }
    private void InitRecyclerView(){
    RecyclerView mRecyclerView = view.findViewById(R.id.tab01_1);

     HomeAdapter mHomeAdapter = new HomeAdapter(getActivity(), mList);mRecyclerView.setAdapter(mHomeAdapter);LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL,false);mRecyclerView.setLayoutManager(linearLayoutManager);mRecyclerView.setItemAnimator(new DefaultItemAnimator());
    

    }

    private List getList() {
    List list = new ArrayList<>();
    List list1 = new ArrayList<>();
    list.add(“塞拉斯”);
    list.add(“亚托克斯”);
    list.add(“锤石”);
    list.add(“瑞兹”);
    list.add(“洛”);
    list.add(“霞”);
    list.add(“李青”);
    list.add(“厄加特”);
    list.add(“安妮”);
    list.add(“金克斯”);
    list.add(“薇恩”);
    list.add(“卡莉斯塔”);
    list.add(“拉克丝”);

     for (int i =0;i<list.size();i++){list1.add((i+1)+":"+list.get(i));}return list1;
    

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    mList = getList();
    view = inflater.inflate(R.layout.tab01, container, false);
    //对recycleview进行配置
    InitRecyclerView();

     return view;
    

    }
    }

基本上就是这样了
所有文件的代码就在我的码云里,有需要可以去看看
https://gitee.com/shi-bin/recycleview.git

第二次博客作业--RecycleView控件相关推荐

  1. C语言第二次博客作业---分支结构

    C语言第二次博客作业---分支结构 一,PTA实验作业 题目1.计算分段函数 本题目要求计算下列分段函数f(x)的值 1.代码 double x, result;scanf("%lf&quo ...

  2. 2022北航敏捷软件工程 第二次博客作业

    2022北航敏捷软件工程 第二次博客作业 项目 内容 这个作业属于哪个课程 2022年北航敏捷软件工程 这个作业的要求在哪里 个人作业-软件案例分析 我在这个课程的目标是 了解软件工程的方法论.在实践 ...

  3. BUAA-2023软件工程第二次博客作业

    BUAA-2023软件工程第二次博客作业 项目 这个作业属于哪个课程 2023北航敏捷软件工程 这个作业的要求在哪里 个人作业-软件案例分析 我在这个课程的目标是 学习并实践软件工程开发的方法论.在把 ...

  4. 20162316刘诚昊 第二周博客作业

    20162316刘诚昊 2006-2007-2 <Java程序设计>第二周学习总结 教材学习内容总结 一.数字不能为被声明变量的首个字符,否则会报错. 二.在输出的引号内是可以用中文的,但 ...

  5. C博客作业00--我的第一篇博客

    这个作业属于哪个班级 C语言–网络2011/2012 这个作业的地址 C博客作业00–我的第一篇博客 这个作业的目标 学习Makdown语法,对本专业及C语言课程有个简单了解,记录自学慕课视频的笔记. ...

  6. OO--第三单元规格化设计 博客作业

    OO--第三单元规格化设计 博客作业 前言 第三单元,我们以JML为基础,先后完成了 PathContainer -> Graph -> RailwaySystem 这是一个递进的过程,代 ...

  7. 【面向对象设计与构造】第一次博客作业

    [面向对象设计与构造]第一次博客作业 一.程序结构分析 1. 第一次作业 类图 由于第一次作业难度较低,实现起来也不需要很复杂的算法,因此在编写程序的时候只建立了两个类,Main类主要负责多项式的读入 ...

  8. OO第三次博客作业——规格

    OO第三次博客作业--规格 一.调研结果: 规格的历史: 引自博文链接:http://blog.sina.com.cn/s/blog_473d5bba010001x9.html 传统科学的特点是发现世 ...

  9. 作业二:个人博客作业内容:需求分析

    作业二:个人博客作业内容:需求分析 怎样与用户有效沟通获取用户的真实需求? 访谈,正式访谈系统分析员将提出一些事先准备好的具体问题:非正式访谈中,分析人员将提出一些用户可以自由回答的开放性问题,一鼓励 ...

最新文章

  1. 讲解ontouchstart、ontouchend、onclick区别和坑点
  2. Jrebel最新激活破解方式
  3. Android如何获得手机power_profile.xml文件
  4. md文件编辑器_File Cabinet Pro for Mac(菜单栏文件管理器)
  5. FPGA FIFO深度计算
  6. linux java升级版本_为嵌入式Linux设备实现更新/升级系统
  7. openstack创建外网_OpenStack的女性谈论外展,教育和指导
  8. 数据科学入门与实战:玩转pandas之一
  9. selenium 使用
  10. 《测试类职位面试360度》
  11. 如何在mysql命令窗口获取到程序正在执行的sql语句
  12. 【转】pda的广播扫码uni-app
  13. 1月13 PyTorch 中模型的使用,保存加载模型
  14. 机器学习-模型评估方法sklearn对MINST数据集实现
  15. Uiautomator入门(初学者用)
  16. 算法入门到进阶(二)——STL和基本数据结构(vector和栈)
  17. 图观——渲染一个简易的三维场景
  18. 这些前端资源,你值得拥有
  19. 深度学习之 imgaug (图像增强)学习笔记
  20. 计算机毕业设计Java教育培训机构信息管理系统(源码+系统+mysql数据库+lW文档)

热门文章

  1. Awesome Python Applications-经典的Python深度学习和机器学习项目汇总
  2. 申报必读 | 2022年教育部产学合作协同育人项目高校申报说明
  3. Java-视频管理系统-毕业设计-SpringBoot-VUE-MyBatis
  4. 创建一个复数类Complex,对复数进行数学运算
  5. 强度最高的 10 种金属排名
  6. python给视频加背景音乐_python中加背景音乐如何操作
  7. 小班安全使用计算机教案,安全小班教案范文(通用5篇)
  8. 鱼眼图像与柱面的投影
  9. Python 中的tips总结
  10. 分享6个AI绘画网站