Android RecyclerView网格布局示例解析

作者:yaominghui 时间:2023-03-04 00:49:44 

一个简单的网格布局

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);
 }
}

效果:

Android RecyclerView网格布局示例解析

来源:https://www.cnblogs.com/sunxun/p/9499219.html

标签:Android,RecyclerView,网格,布局
0
投稿

猜你喜欢

  • 关于C#转换二进制所引起的一些思考

    2021-06-02 18:31:22
  • 详解Spring循环依赖的解决方案

    2022-05-29 13:14:57
  • c语言实现的几种常用排序算法

    2022-02-23 04:04:11
  • Java发送报文与接收报文的实例代码

    2023-07-09 04:44:01
  • C#控件Picturebox实现鼠标拖拽功能

    2021-10-30 20:52:36
  • c# 实现模糊PID控制算法

    2022-12-06 13:06:22
  • flutter实现底部导航栏

    2023-08-23 01:06:13
  • Spring Boot JPA中使用@Entity和@Table的实现

    2023-11-22 11:49:58
  • JDBC连接mysql乱码异常问题处理总结

    2023-11-06 14:57:27
  • Android ActivityManager使用案例详解

    2021-11-09 14:35:54
  • C#隐藏控制台键盘输入的方法

    2022-04-29 21:11:06
  • C#编程实现自定义热键的方法

    2023-12-05 23:57:18
  • springboot整合JSR303参数校验与全局异常处理的方法

    2023-10-06 01:31:40
  • C# ManualResetEvent用法详解

    2021-06-11 09:37:14
  • JavaCV实现读取视频信息及自动截取封面图详解

    2022-05-20 14:43:05
  • Java简单工厂模式定义与用法实例分析

    2023-10-12 10:58:38
  • SpringBoot项目中分页插件PageHelper无效的问题及解决方法

    2021-07-08 23:25:55
  • Android模仿微信收藏文件的标签处理功能

    2022-07-17 05:32:18
  • Java并发编程之同步容器

    2023-03-10 16:34:29
  • Java swing框架实现的贪吃蛇游戏完整示例

    2021-06-30 13:03:01
  • asp之家 软件编程 m.aspxhome.com