Android RecyclerView网格布局示例解析
作者:yaominghui 发布时间:2023-03-04 00:49:44
标签:Android,RecyclerView,网格,布局
一个简单的网格布局
activity_main.xml
<?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=".MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/message_notice_list_item"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.constraint.ConstraintLayout>
message_main_notice_list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="150dp"
android:gravity="center"
android:background="@color/colorAccent"
android:orientation="vertical"
android:layout_marginTop="5dp"
>
<ImageView
android:id="@+id/iv_image"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@mipmap/logo"
android:gravity="center"></ImageView>
<LinearLayout
android:layout_width="60dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="5dp">
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="30dp"
android:gravity="center"
android:text="BIBIA"></TextView>
</LinearLayout>
</LinearLayout>
适配器MyRecyclerViewAdapter.java:
package com.example.administrator.recyclerviewtest;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder>{
private List<ItemBean> mList;
static class ViewHolder extends RecyclerView.ViewHolder{
View myView;
ImageView imageView;
TextView title;
public ViewHolder(View itemView) {
super(itemView);
myView = itemView;
imageView = (ImageView) itemView.findViewById(R.id.iv_image);
title = (TextView) itemView.findViewById(R.id.tv_title);
}
}
public MyRecyclerViewAdapter(List<ItemBean> list){
this.mList = list;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.message_main_notice_list,null);
final ViewHolder holder = new ViewHolder(view);
return holder;
}
//将数据绑定到控件上
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
ItemBean bean = mList.get(position);
holder.imageView.setBackgroundResource(bean.itemImage);
holder.title.setText(bean.itemTitle);
}
@Override
public int getItemCount() {
return mList.size();
}
//下面两个方法提供给页面刷新和加载时调用
public void add(List<ItemBean> addMessageList) {
//增加数据
int position = mList.size();
mList.addAll(position, addMessageList);
notifyItemInserted(position);
}
public void refresh(List<ItemBean> newList) {
//刷新数据
mList.removeAll(mList);
mList.addAll(newList);
notifyDataSetChanged();
}
}
主方法:
package com.example.administrator.recyclerviewtest;
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 java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private List<ItemBean> list;
private MyRecyclerViewAdapter myAdapte1r;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = new ArrayList<ItemBean>();
for ( int i=0; i< 19;i++){
list.add(new ItemBean(
R.mipmap.logo,
"Hello",
new Date().toString()+""
));
}
myAdapte1r = new MyRecyclerViewAdapter(list);
recyclerView = (RecyclerView) findViewById(R.id.message_notice_list_item);
//纵向线性布局
//LinearLayoutManager layoutManager = new LinearLayoutManager(this);
//纵向线性布局
GridLayoutManager layoutManager = new GridLayoutManager(this,2);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(myAdapte1r);
}
}
效果:
来源:https://www.cnblogs.com/sunxun/p/9499219.html


猜你喜欢
- 本文实例讲述了C#图像处理之木刻效果实现方法。分享给大家供大家参考。具体如下://木刻效果public Bitmap PFilterMuKe
- 一、项目要求实现一个通讯录通讯录可以用来存储100个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:添加联系人信息删除指定
- 一、简述效果:实现功能:长按Button时改变Button显示文字,弹出Dialog(动态更新音量),动态生成录音文件,开始录音;监听手指动
- 1.新建一个项目2.给项目添加引用:Microsoft Excel 12.0 Object Library (2007版本)using Ex
- 1. 概述官方JavaDocsApi: javax.swing.JComboBoxJComboBox,下拉列表框。JComboBox以下列列
- Redis 简介Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。Redis 与其他 key - v
- 一、使用注解实现自定义映射关系当POJO属性名与数据库列名不一致时,需要自定义实体类和结果集的映射关系,在MyBatis注解开发中,使用 @
- 在绝大多数android机器etc路径下存放一个的apns-conf.xml文件,表示当前机器使用的apn信息通过root机器可以push出
- C#时间显示格式一起看下:24小时制this.toolStripStatusLabel1.Text = “您好,欢迎来到XXXX控制系统!”
- 背景在我做WinForm开发的过程中,经常会遇到耗时操作或阻塞操作。他们会引发软件的卡顿甚至假死,严重影响软件的使用。因此,这类耗时或阻塞的
- 本文实例讲述了Java使用Preference类保存上一次记录的方法。分享给大家供大家参考。具体分析如下:在使用java中JFileChoo
- Android 侧滑菜单的实现,参考网上的代码,实现侧滑菜单。最重要的是这个动画类UgcAnimations,如何使用动画类来侧滑的封装Fl
- 我们经常会将数据源放在DataTable里面,但是有时候也需要移除不想要的行,下面的代码告诉你们DataTable dts;DataRow[
- JavaFx中其实也可以直接使用字体图标iconfont的,只需要加载ttf字体文件,之后设置unicode即可,具体可以看我给出的代码既然
- 在Java中,当为一个类创建了多个构造函数时,有时想在一个构造函数中调用另一个构造函数以减少代码量。这时可以使用this关键字来实现。有关构
- 本文是在我的文章android图片处理,让图片变成圆形 的基础上继续写的,可以去看看,直接看也没关系,也能看懂 1、首先在res文
- 1. selectKey标签查询DDLCREATE TABLE `luck_reward_info` ( `id` int NO
- 1.抽象类与抽象方法:(1)使用关键字abstract修饰的类,称为抽象类.(2)抽象类只是用到一个类所具有的行为,不能单独通过创建对象来使
- android提供的工具链和开发工具比较完善,因此它的开发环境的搭建比较简单,相信许多朋友都已经搭建好环境,并编写了HelloA
- 微信的图片下拽返回功能在日常使用中非常方便,同时在很多 App 中都见到了类似的设计,可以说一旦习惯这种操作再也回不去了。这几天逛 GitH