导包

def supportVersion = '28.0.0' 定义常量我的sdk版本为28  
implementation "com.android.support:recyclerview-v7:$supportVersion"
implementation "com.android.support:cardview-v7:$supportVersion"
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.42'
implementation 'com.yqritc:recyclerview-flexibledivider:1.4.0'
依赖代码为
def supportVersion = '28.0.0'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
implementation 'android.arch.navigation:navigation-fragment:1.0.0-alpha09'
implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
implementation "com.android.support:recyclerview-v7:$supportVersion"
implementation "com.android.support:cardview-v7:$supportVersion"
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.42'
implementation 'com.yqritc:recyclerview-flexibledivider:1.4.0' }

依赖

Adapter代码(解释都在上面)
package com.example.imageload.adapter;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.imageload.R;
import com.example.imageload.bean.GridBean; import java.util.List; //记得这里添加泛型
public class MyGridAdapter extends BaseQuickAdapter<GridBean, BaseViewHolder> {
// private List data=null;
public MyGridAdapter(int layoutResId, List data) { super(layoutResId, data);//这里设置你的布局 Main窗口传入你的数据这里转换了封装了一下传到了convert 下的GridBean item(怎么转换你不用guan)
//layoutResId 为你单个属性布局的ID 假如你要再屏幕上显示5张图片这个就传入你一张图片的布局文件 剩下那四张也用这个布局 要跟androidx.recyclerview.widget.RecyclerView分开 } @Override
protected void convert(BaseViewHolder helper, GridBean item) {
helper.setText(R.id.textView_list,item.getTitle());//设置值
helper.setImageResource(R.id.img_list,item.getImageResourse());
helper.addOnClickListener(R.id.my_button);//添加事件
helper.addOnClickListener(R.id.my_button2); } }

bean

package com.example.imageload.bean;

public class GridBean {

    private String title;

    private  int imageResourse;

    public GridBean(String title, int imageResourse) {
this.title = title;
this.imageResourse = imageResourse;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public int getImageResourse() {
return imageResourse;
} public void setImageResourse(int imageResourse) {
this.imageResourse = imageResourse;
}
}

Main窗口

package com.example.imageload;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.example.imageload.adapter.MyGridAdapter;
import com.example.imageload.bean.GridBean; import java.util.ArrayList; public class MainActivity extends AppCompatActivity {
private ArrayList<GridBean> mDataList = new ArrayList<>(); //主窗口list集合
private RecyclerView recyclerView;
MyGridAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//设置主布局 recyclerView = findViewById(R.id.my_list);
recyclerView.setLayoutManager(new GridLayoutManager(this, ));
initData();
initAdapter();
} private void initAdapter() {
//这里问什么不用viewholder?viewhodler除了缓存?有什么用
myAdapter = new MyGridAdapter(R.layout.my_item, mDataList);
myAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
switch (view.getId())
{ case R.id.my_button:
Toast.makeText(MainActivity.this,"child按钮一被单机"+position,Toast.LENGTH_SHORT).show();
break;
case R.id.my_button2:
Toast.makeText(MainActivity.this,"按钮2被单机"+position,Toast.LENGTH_SHORT).show();
break;
} }
});
myAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) { switch (position)
{ case :
// Intent intent= new Intent();
// intent.setClass(MainActivity.this,SectionActivity.class);
// startActivity(intent);
break;
}
Toast.makeText(MainActivity.this,"你点击了"+position,Toast.LENGTH_SHORT).show();
}
});
recyclerView.setAdapter(myAdapter);//记得add
Log.i("Mainact","初始化adapter");
} private void initData()
{
for (int i=;i<;i++)
{
GridBean b=new GridBean("第"+i+"个例子",R.mipmap.ic_launcher);
mDataList.add(b);
} }
}

主布局文件 activity_main.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"
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/my_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
/> </LinearLayout>

单个布局文件my_item.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:foreground="?android:attr/selectableItemBackground"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
<LinearLayout
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/dialog"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_centerInParent="true"
android:background="#9DDE76"
android:gravity="center"
android:textColor="#ffffffff"
android:textSize="30dp"
android:visibility="invisible" />
<ImageView
android:id="@+id/img_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@android:mipmap/sym_def_app_icon" /> <TextView
android:id="@+id/textView_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:layout_gravity="center"
android:textAlignment="center" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/my_button"
android:text="点我测试"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/my_button2"
android:text="点我测试2"
/> </LinearLayout>
</androidx.cardview.widget.CardView>

理解就很好理解了 不贴代码了贴图(添加装饰什么的百度,上面也有点我注释了)

安卓Recycleview简单的网格布局-初学者的关键点的更多相关文章

  1. JAVA简单的网格布局管理器--JAVA基础

    网格布局管理器: GridLayoutDemo.java: import java.awt.GridLayout;import javax.swing.JButton;import javax.swi ...

  2. Android RecyclerView网格布局

    一个简单的网格布局activity_main.xml <?xml version="1.0" encoding="utf-8"?> <andr ...

  3. CSS中网格布局实战(初级)

    大家好,网格布局是我们在网页布局中经常用到的,那这里我就给大家分享一篇简单的网格布局,让大家能简单明了的了解网格布局的基本内容.闲话不多说,直接进入主题! 第一步,基本的框架结构.这里直接一个div来 ...

  4. 一起撸个简单粗暴的Tv应用主界面的网格布局控件(上)

    这一篇是真的隔了好久了~~,也终于可以喘口气来好好写博客了,这段时间实在是忙不过来了,迭代太紧.好,废话不多说,进入今天的主题. 效果 图一是Tv应用:当贝市场的主页 图二是咱自己撸的简单粗暴的 Tv ...

  5. 原生 CSS 网格布局学习笔记

    下是来自Oliver Williams的帖子. Oliver已经学习了相当长时间的原生CSS网格,可以说是在CSS网格方面有一定的发言权.在这篇文章中,他将以非同寻常的思路分析自己的CSS网格布局学习 ...

  6. 为网格布局图片打造的超炫 CSS 加载动画

    今天,我想与大家分享一些专门为网格布局的图像制作的很酷的 CSS 加载动画效果.您可以把这些效果用在你的作品集,博客或任何你想要的网页中.设置很简单.我们使用了下面这些工具库来实现这个效果: Norm ...

  7. 【精心挑选】15款最好的 jQuery 网格布局插件(Grid Plugins)

    如今,大多数网站设计要靠网格系统和布局,这能够提供给设计人员一个方便的途径来组织网页上的内容.网格的设计最常见于报纸和杂志的版面,由文字和图像构成的列组成. 这篇文章给大家分享精心挑选的15款最佳的 ...

  8. Bootstrap系列 -- 10. 网格布局

    一. 实现原理 网格布局是通过容器的大小,平均分为12份(可以修改),再调整内外边距,和表格布局有点类似但是也存在区别. 实现步骤如下: (1) 数据行.row 必须包含在容器.container 中 ...

  9. bootstrap学习总结-02 网格布局

    1  网格布局 Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列. <!DOCTYPE html> ...

随机推荐

  1. 基于Modelsim的视频流仿真

    一.前言 最近在看牟新刚写的<基于FPGA的数字图像处理原理及应用>,书中关于FPGA数字图像处理的原理的原理写的非常透彻,在网上寻找了很久都没有找到完整的源代码工程,因此尝试自己做了补充 ...

  2. 捣鼓FileZilla

    今天突然对ftp服务器感兴趣,于是随意打了一个ftp词条,发现了FZ官网,好奇点进去下载了之后,捣鼓了一会.于是,也写一个小教程记录一下吧,害怕自己以后忘记怎么弄的了. 首先需要用到两个,一个是FZ ...

  3. 从零开始编写IntelliJ IDEA插件

    写Java代码的时候,经常会涉及到重复性的操作,这个时候就会想要是有这样一个插件就好了,如果是大家都会遇到的场景,IDE或许已经提供了,再不然也有可能有人编写了相关的插件.要是这个操作是你们的编码环境 ...

  4. Pytorch model saving and loading 模型保存和读取

    It is really useful to save and reload the model and its parameters during or after training in deep ...

  5. Kubernetes 的一些重要概念

    Cluster Cluseter 是计算.存储和网络资源的集合,Kubernetes 利用这些资源运行各种基于容器的应用. Master Master 是 Cluster 的大脑, 它的主要责任是调度 ...

  6. 自定义组装json对象

    组装json对象 public string strTree(DataTable dt, string type, string state) { string strjosn = "&qu ...

  7. 解决请求中的post、get乱码问题以及响应的乱码问题

    post: get: response:

  8. Leet Code 8.字符串转换整数

    实现一个atoi函数,使其能将字符串转成整数,根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止.当我们寻找到的第一个非空字符为正或负号时,则将该符号与后面尽可能多的连续数字组合起来,作 ...

  9. natapp 内网穿透服务

    参考文章:https://www.jianshu.com/p/91a321e584b8 参考文章:https://www.jianshu.com/p/c4cb8666c96a 一.什么是内网穿透 通过 ...

  10. 「译」forEach循环中你不知道的3件事

    前言 本文925字,阅读大约需要7分钟. 总括: forEach循环中你不知道的3件事. 原文地址:3 things you didn't know about the forEach loop in ...