RecyclerView学习笔记整理(1)简单了解及使用

之前就学习过RecyclerView趁现在有时间需要对其进行整理一下然后再去学习BRACH这个框架。

RecyclerView简介
该RecyclerView widget是一种更先进的柔性版的ListView。这个小工具是一个容器,用于显示,能非常有效地维护了意见数量有限,滚动大的数据集。使用 RecyclerView当你拥有的数据的集合,它的元素在运行时改变基于用户行为和网络事件的小部件。

该RecyclerView类简化,提供显示和处理大数据集:

定位项目布局管理器

默认的动画为公用项的操作,例如删除或增加的项目

您还可以在自定义的布局管理器和动画的灵活性RecyclerView部件。

要使用RecyclerView小部件,你必须指定一个适配器和一个布局管理器。要创建一个适配器,扩展RecyclerView.Adapter类。实施的细节取决于你的数据集的具体情况和意见的类型。欲了解更多信息,请参见示例如下。

布局管理器 A的内部位置的项目意见RecyclerView,并确定何时再利用项目的看法不再对用户可见。重用(或回收)的图,布局管理器可能会问适配器与数据集不同的元素替换视图的内容。以这种方式回收的观点提高通过避免产生不必要的视图或执行昂贵性能findViewById()的查找。

RecyclerView提供这些内置的布局管理器:

LinearLayoutManager 显示在垂直或水平滚动列表项。

GridLayoutManager 显示在网格中的项目。

StaggeredGridLayoutManager 显示了交错网格项目。

要创建自定义布局管理器,扩展RecyclerView.LayoutManager类。

动画

动画的添加和删除项目中默认启用的RecyclerView。要自定义这些动画,延长 RecyclerView.ItemAnimator类,并使用RecyclerView.setItemAnimator() 方法。

以上内容来自 Google官方文档 的翻译。
从build中导入

    implementation 'com.android.support:recyclerview-v7:26.1.0'

注意:这个recyclerview的版本根据你自己的sdkVersion的版本来改变即可。

关于item的布局问题可以参考这篇文章:关于recycleview的item的布局问题
关于recycleview 滑动item变长(item变形)问题

首先我们来写一个MainActivity

这里有关Adapter和LayoutManager布局管理控制的一个

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
	private RecyclerView mRecyclerView;
	private MyAdapter mMyAdapter;//导入自己的适配器这个自己写即可
	private RecyclerView.LayoutManager mLayoutManager;//RecyclerView的LayoutManger布局管理器

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initData();
		initView();
	}
	private void initData() {
		mLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
		//三种布局管理器的垂直布局,HORIZONTAL是横向布局
/*		mLayoutManager = new LinearLayoutManager(this, GridLayoutManager.VERTICAL, false);
		mLayoutManager = new LinearLayoutManager(this, StaggeredGridLayoutManager.VERTICAL, false);
		mLayoutManager = new LinearLayoutManager(this, StaggeredGridLayoutManager.HORIZONTAL, false);*/
		mMyAdapter = new MyAdapter(getData());
	}
	private void initView() {
		mRecyclerView = (RecyclerView) findViewById(R.id.recycle);
		// 设置布局管理器
		mRecyclerView.setLayoutManager(mLayoutManager);
		// 设置adapter
		mRecyclerView.setAdapter(mMyAdapter);
	}
	private ArrayList<String> getData() {

		//新建RecyclerView的item条目数可以自行更改后面将写入Adapter中

		ArrayList<String> data = new ArrayList<>();
		String temp = " 这里是条目";
		String tx   = "新建item后可以看见";

		for(int i = 1; i < 21; i++) {
			data.add(i + temp+tx+i);
		}

		return data;
	}

}

我们再来写一个Adapter

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;



public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

	private ArrayList<String> mData;
	public MyAdapter(ArrayList<String> data) {
		this.mData = data;
	}
	public void updateData(ArrayList<String> data) {
		this.mData = data;
		notifyDataSetChanged();
	}

	@Override
	public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
		// 实例化展示的view
		View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout,parent,false);
		// 实例化viewholder
		ViewHolder viewHolder = new ViewHolder(v);
		return viewHolder;
	}

	@Override
	public void onBindViewHolder(ViewHolder holder, int position) {
		// 绑定数据
		holder.mTv.setText(mData.get(position));
//给其定义一个布局,用来控制Recyview的item的一个布局,不然感觉起来有点怪怪的
		ViewGroup.LayoutParams layoutParams = holder.itemView.getLayoutParams();
		layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT;
		layoutParams.width  = ViewGroup.LayoutParams.WRAP_CONTENT;

		holder.itemView.setLayoutParams(layoutParams);
	}

	@Override
	public int getItemCount() {
		return mData == null ? 0 : mData.size();
	}


	public static class ViewHolder extends RecyclerView.ViewHolder {

		TextView mTv;

		public ViewHolder(View itemView) {
			super(itemView);
			mTv = (TextView) itemView.findViewById(R.id.item_text);

		}
	}
}


我们再来看看activity_main

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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="com.beta.recycle.MainActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycle"
        android:scrollbars="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</android.support.v7.widget.RecyclerView>
</android.support.constraint.ConstraintLayout>

##最后是item_layout的关于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">
<TextView
    android:id="@+id/item_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="1111111"/>
</LinearLayout>

好了现在我们就实现了一个非常非常简单而又基础的RecyclerView的使用。
参考文章:
https://blog.csdn.net/li15225271052/article/details/54318704
https://www.jianshu.com/p/4fc6164e4709

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

轻烟飘荡

我想吃甜筒

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

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

打赏作者

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

抵扣说明:

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

余额充值