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);
}
}
效果:
来源:https://www.cnblogs.com/sunxun/p/9499219.html
标签:Android,RecyclerView,网格,布局
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
关于C#转换二进制所引起的一些思考
2021-06-02 18:31:22
![](https://img.aspxhome.com/file/2023/0/88340_0s.png)
详解Spring循环依赖的解决方案
2022-05-29 13:14:57
c语言实现的几种常用排序算法
2022-02-23 04:04:11
![](https://img.aspxhome.com/file/2023/4/117754_0s.jpg)
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
![](https://img.aspxhome.com/file/2023/0/109150_0s.jpg)
Spring Boot JPA中使用@Entity和@Table的实现
2023-11-22 11:49:58
JDBC连接mysql乱码异常问题处理总结
2023-11-06 14:57:27
![](https://img.aspxhome.com/file/2023/8/67068_0s.png)
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
![](https://img.aspxhome.com/file/2023/5/61565_0s.png)
C# ManualResetEvent用法详解
2021-06-11 09:37:14
![](https://img.aspxhome.com/file/2023/1/113811_0s.png)
JavaCV实现读取视频信息及自动截取封面图详解
2022-05-20 14:43:05
![](https://img.aspxhome.com/file/2023/7/66177_0s.jpg)
Java简单工厂模式定义与用法实例分析
2023-10-12 10:58:38
![](https://img.aspxhome.com/file/2023/0/79160_0s.png)
SpringBoot项目中分页插件PageHelper无效的问题及解决方法
2021-07-08 23:25:55
Android模仿微信收藏文件的标签处理功能
2022-07-17 05:32:18
![](https://img.aspxhome.com/file/2023/2/138492_0s.png)
Java并发编程之同步容器
2023-03-10 16:34:29
![](https://img.aspxhome.com/file/2023/8/70308_0s.png)
Java swing框架实现的贪吃蛇游戏完整示例
2021-06-30 13:03:01
![](https://img.aspxhome.com/file/2023/7/116197_0s.gif)