前言

最近在项目中用到了ListView,不知道为什么总是出现数据错乱的情况,另外RecyclerView包含很多Item动画,所以改成了RecyclerView。

简单使用

  1. RecyclerView使用的时候需要引入依赖
implementation 'com.android.support:recyclerview-v7:28.0.0'

后面的版本号根据自己的项目版本更改,引入完成之后点击上面的Sync Now

  1. 在activity中添加控件
<android.support.v7.widget.RecyclerView
android:id="@+id/focus_list_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="10dp"></android.support.v7.widget.RecyclerView>
  1. 编写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="70dp"
android:layout_marginBottom="5dp"
android:layout_marginTop="4dp"
android:background="#fff"
android:orientation="horizontal"> <com.onepilltest.others.SwipeMenu
android:layout_width="match_parent"
android:layout_height="match_parent"> <LinearLayout
android:id="@+id/focus_list_show"
android:layout_width="match_parent"
android:layout_height="match_parent"> <LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:gravity="center_vertical"> <ImageView
android:layout_marginLeft="20dp"
android:id="@+id/focus_list_item_img"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:layout_marginRight="10dp"
android:scaleType="centerCrop"
android:src="@drawable/user"> </ImageView> </LinearLayout> <LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="7"
android:gravity="center"
android:orientation="vertical"
android:paddingLeft="5dp"> <TextView
android:id="@+id/focus_list_item_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="7dp"
android:gravity="left"
android:text="李四 18831107935" /> <TextView
android:id="@+id/focus_list_item_tag"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:text="河北师范大学软件学院302" />
</LinearLayout> <LinearLayout
android:layout_width="0dp"
android:layout_height="65dp"
android:layout_weight="3"
android:gravity="center"> <ImageView
android:id="@+id/focus_list_item_add"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_gravity="center" />
</LinearLayout>
</LinearLayout> <LinearLayout
android:layout_width="160dp"
android:layout_height="match_parent">
<TextView
android:id="@+id/focus_list_adds"
android:layout_width="80dp"
android:layout_height="match_parent"
android:background="#f70"
android:gravity="center"
android:text="查看"
android:textColor="#ffffff"
android:textSize="14sp" />
<TextView
android:id="@+id/focus_list_dels"
android:layout_width="80dp"
android:layout_height="match_parent"
android:background="@color/holo_red_light"
android:gravity="center"
android:text="取消关注"
android:textColor="#ffffff"
android:textSize="14sp" />
</LinearLayout> </com.onepilltest.others.SwipeMenu>
</LinearLayout>
  1. 创建Adapter
package com.onepilltest.personal;

import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast; import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.onepilltest.R;
import com.onepilltest.URL.Connect;
import com.onepilltest.entity.ToFocus;
import com.onepilltest.entity.focus;
import com.onepilltest.index.DoctorDetailsActivity;
import com.onepilltest.index.FoundDoctorActivity; import java.util.List; public class FocusListAdapter2 extends RecyclerView.Adapter<FocusListAdapter2.ViewHolder> { private List<ToFocus> focusList; public FocusListAdapter2(List<ToFocus> baseList) {
focusList = baseList;
for(ToFocus f:focusList){
Log.e("focus数据源",""+f.toString());
} } static class ViewHolder extends RecyclerView.ViewHolder{
ImageView img ;
TextView name;
TextView more;
TextView add;
TextView del; public ViewHolder(@NonNull View itemView) {
super(itemView);
img = itemView.findViewById(R.id.focus_list_item_img);
name = itemView.findViewById(R.id.focus_list_item_name);
more = itemView.findViewById(R.id.focus_list_item_tag);
add = itemView.findViewById(R.id.focus_list_adds);
del = itemView.findViewById(R.id.focus_list_dels);
}
}
private Context mContext;
// //点击和长按
// public interface OnItemClickListener {
// void onClick(int position);
// }
// private OnItemClickListener listener;
// public void setOnItemClickListener(OnItemClickListener listener) {
// this.listener = listener;
// }
//
// public interface OnItemLongClickListener {
// void onClick(int position);
// }
// private OnItemLongClickListener longClickListener;
// public void setOnItemLongClickListener(OnItemLongClickListener longClickListener) {
// this.longClickListener = longClickListener;
// } @NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.focus_liste_item,viewGroup,false);
mContext = viewGroup.getContext();
ViewHolder holder = new ViewHolder(view);
return holder;
} @Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
ToFocus focus = focusList.get(i);
//加载头像
RequestOptions requestOptions = new RequestOptions().circleCrop();
Glide.with(mContext)
.load(Connect.BASE_URL + focus.getImg())
.apply(requestOptions)
.into(viewHolder.img);
viewHolder.name.setText(focus.getName());
viewHolder.more.setText(focus.getMore());
viewHolder.add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("focusAdapter","查看第"+i+"条数据");
Toast.makeText(mContext,"查看第"+i+"条数据,Type:"+focus.toString(),Toast.LENGTH_SHORT).show();
if (focus.getType() == 1){
Intent intent = new Intent(mContext, DoctorDetailsActivity.class);
intent.putExtra("id",focus.getTypeId());
mContext.startActivity(intent);
}else{
Intent intent = new Intent(mContext, ProductActivity.class);
intent.putExtra("id",focus.getTypeId());
mContext.startActivity(intent);
} }
});
viewHolder.del.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("focusAdapter","删除第"+i+"条数据");
Toast.makeText(mContext,"删除第"+i+"条数据",Toast.LENGTH_SHORT).show();
}
});
} @Override
public int getItemCount() {
return focusList.size();
} }
  1. 在MainActivity中绑定Adapter
        recyclerView = findViewById(R.id.focus_list_list);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
adapter = new FocusListAdapter2(baseList);
recyclerView.setAdapter(adapter);

关于RecyclerView(一)基本使用的更多相关文章

  1. RecyclerView使用大全

    RecylerView介绍 RecylerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,这一点从它的名字recyler ...

  2. 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载

    title: 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载 tags: -RecyclerView,下拉刷新,上拉加载更多 grammar_cjkRuby: true - ...

  3. 安卓易学,爬坑不易——腾讯老司机的RecyclerView局部刷新爬坑之路

    针对手游的性能优化,腾讯WeTest平台的Cube工具提供了基本所有相关指标的检测,为手游进行最高效和准确的测试服务,不断改善玩家的体验.目前功能还在免费开放中. 点击地址:http://wetest ...

  4. Android Studio开发RecyclerView遇到的各种问题以及解决(二)

    开发RecyclerView时候需要导入别人的例子,我的是从github导入的,下载下github的压缩包之后解压看你要导入的文件是priject还是Module.(一般有app文件夹的大部分是pro ...

  5. Android Studio开发RecyclerView遇到的各种问题以及解决(一)

    以前一直在用ListView,,,最近才看RecyclerView发现好强大.RecyclerView前提是Android版本在5.0以上,本人以前用的是eclipse只支持到4.4.索性就安装一个A ...

  6. Android的Kotlin秘方(II):RecyclerView 和 DiffUtil

    作者:Antonio Leiva 时间:Sep 12, 2016 原文链接:http://antonioleiva.com/recyclerview-diffutil-kotlin/ 如你所知,在[支 ...

  7. Android RecyclerView 实现支付宝首页效果

    Android RecyclerView 实现支付宝首页效果 [TOC] 虽然我本人不喜欢支付宝的,但是这个网格本身其实还是不错的,项目更新中更改了一个布局为网格模式,类似支付宝.(估计是产品抄袭的= ...

  8. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  9. 打造android偷懒神器———RecyclerView的万能适配器

    转载请注明出处谢谢:http://www.cnblogs.com/liushilin/p/5720926.html 很不好意思让大家久等了,本来昨天就应该写这个的,无奈公司昨天任务比较紧,所以没能按时 ...

  10. 安卓v7支持包下的ListView替代品————RecyclerView

    RecyclerView这个控件也出来很久了,相信大家也学习的差不多了,如果还没学习的,或许我可以带领大家体验一把这个艺术般的控件. 项目已经同步至github:https://github.com/ ...

随机推荐

  1. JavaScript基础对象创建模式之对象的常量(028)

    虽然许多编程语言提供了const关键字来支持常量的声明,但JavaScript里没有表示常量的语义.我们可以用全大写的方式来声明变量,表明它实际上是个常量: Math.PI; // 3.1415926 ...

  2. 10大HBase常见运维工具整理

    摘要:HBase自带许多运维工具,为用户提供管理.分析.修复和调试功能.本文将列举一些常用HBase工具,开发人员和运维人员可以参考本文内容,利用这些工具对HBase进行日常管理和运维. HBase组 ...

  3. 部署LNMP环境——Yum安装(113资讯网)

    Yum安装优点:安装东西,方便快捷,特别是不用考虑包依赖 教程(Centos做演示,其他系统大同小异): 1.更换国内Yum源: [root@root xx ]# rm -rf /etc/yum.re ...

  4. 每日一题 - 剑指 Offer 43. 1~n整数中1出现的次数

    题目信息 时间: 2019-07-01 题目链接:Leetcode tag: 整除 取余 规律 递归 难易程度:中等 题目描述: 输入一个整数 n ,求1-n这n个整数的十进制表示中1出现的次数. 例 ...

  5. 弹性碰撞问题:Ants+Linear world

    题目一:Ants 传送门 题目描述 输入 输出 样例 样例输入 样例输出 分析 一句话题意:有n只蚂蚁在木棍上爬行,每只蚂蚁的速度都是每秒1单位长度,现在给你所有蚂蚁初始的位置(蚂蚁运动方向未定),蚂 ...

  6. C++左值引用与右值引用

    本文翻译自:https://docs.microsoft.com/en-us/cpp/cpp/references-cpp?view=vs-2019 引用,类似于指针,用于存储一个位于内存某处的对象的 ...

  7. 05 drf源码剖析之认证

    05 drf源码剖析之认证 目录 05 drf源码剖析之认证 1. 认证简述 2. 认证的使用 3. 源码剖析 4. 总结 1. 认证简述 当我们通过Web浏览器与API进行交互时,我们可以登录,然后 ...

  8. 数据分析02 /pandas基础

    数据分析02 /pandas基础 目录 数据分析02 /pandas基础 1. pandas简介 2. Series 3. DataFrame 4. 总结: 1. pandas简介 numpy能够帮助 ...

  9. Django框架02 /Django下载安装、url路由分发

    Django框架02 /Django下载安装.url路由分发 目录 Django框架02 /Django下载安装.url路由分发 1. django下载安装 2. pycharm创建项目 3. 基于D ...

  10. C#/VB.NET 在Word中添加条码、二维码

    本文介绍如何通过C# 和VB.NET代码实现在Word文档中添加条码和二维码.代码中将分为在Word正文段落中.页眉页脚中等情况来添加. 使用工具:Free Spire.Office for .NET ...