RecyclerView 瀑布流的配置以及它的 StaggeredGridLayoutManager 布局管理器的使用
来源:互联网 发布:伴奏升调软件 编辑:程序博客网 时间:2024/06/11 17:50
RecyclerView 瀑布流的配置以及它的 StaggeredGridLayoutManager 布局管理器的使用
1、先在build.gradle中进行配置,在最后加上
compile 'com.android.support:appcompat-v7:23.4.0'compile 'com.android.support.constraint:constraint-layout:1.0.2'testCompile 'junit:junit:4.12'compile 'com.android.support:recyclerview-v7:23.4.0'
2、使用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="com.xykj.recyclerviewdemo.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/m_recycler" android:layout_width="match_parent" android:layout_height="match_parent" /></android.support.constraint.ConstraintLayout>
在layout中新建item_layout.xml布局
<?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="wrap_content" android:background="#5500ff00" android:orientation="vertical" android:padding="5dp"> <ImageView android:id="@+id/item_ico" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher" /> <TextView android:id="@+id/item_name" android:layout_width="120dp" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="ABC" android:textSize="20sp" /></LinearLayout>
java中新建model包class类
package com.xykj.recyclerviewdemo;public class User { private int icon; private String name; public int getIcon() { return icon; } public void setIcon(int icon) { this.icon = icon; } public String getName() { return name; } public void setName(String name) { this.name = name; } public User(int icon, String name) { this.icon = icon; this.name = name; }}
模拟一个图片高度不一样的类
package com.xykj.recyclerviewdemo;import android.graphics.Rect;import android.support.v7.widget.RecyclerView;import android.view.View;public class SpaceItemDecration extends RecyclerView.ItemDecoration { @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { //获取当前item的下标 int pos = parent.getChildLayoutPosition(view); if (pos < 3) { outRect.top = 0; } else { outRect.top = 10; } outRect.left = 5; outRect.right = 5; }}
创建一个适配器Adapter
package com.xykj.recyclerviewdemo;import android.content.Context;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.LinearLayout;import android.widget.TextView;import java.util.List;public class UserAdapter extends RecyclerView.Adapter<UserAdapter.UserView> { private List<User> list; private LayoutInflater mInflater; public UserAdapter(Context context) { mInflater = LayoutInflater.from(context); } @Override public UserView onCreateViewHolder(ViewGroup parent, int viewType) { View layout = mInflater.inflate(R.layout.item_layout, null);// ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,// ViewGroup.LayoutParams.WRAP_CONTENT);// layout.setLayoutParams(lp); return new UserView(layout); } // 绑定数据 @Override public void onBindViewHolder(UserView holder, int position) { User u = list.get(position); holder.ivIcon.setImageResource(u.getIcon()); holder.tvName.setText(u.getName()); if (position % 3 == 0) { LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams (ViewGroup.LayoutParams.WRAP_CONTENT, 240); holder.ivIcon.setLayoutParams(lp); } else { LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams (ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); holder.ivIcon.setLayoutParams(lp); } } @Override public int getItemCount() { return null == list ? 0 : list.size(); } //数据的显示视图类 class UserView extends RecyclerView.ViewHolder implements View.OnClickListener{ ImageView ivIcon; TextView tvName; public UserView(View itemView) { super(itemView); ivIcon = (ImageView) itemView.findViewById(R.id.item_ico); tvName = (TextView) itemView.findViewById(R.id.item_name); itemView.setOnClickListener(this); } @Override public void onClick(View v) { //获取当前这个item的位置 int position = getLayoutPosition(); list.remove(position);// notifyDataSetChanged(); notifyItemRemoved(position); } } @Override public int getItemViewType(int position) { return super.getItemViewType(position); } public List<User> getList() { return list; } public void setList(List<User> list) { this.list = list; }}
编写MainActivity
package com.xykj.recyclerviewdemo;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;import java.util.List;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mRecycler = (RecyclerView) findViewById(R.id.m_recycler); //配置显示方式 //以列表形式显示 //mRecycler.setLayoutManager(new LinearLayoutManager(this)); //网格显示 //mRecycler.setLayoutManager(new GridLayoutManager(this,3)); //瀑布流 mRecycler.setLayoutManager(new StaggeredGridLayoutManager (2,StaggeredGridLayoutManager.VERTICAL)); //添加Item之间的间距 mRecycler.addItemDecoration(new SpaceItemDecration()); init(); } private RecyclerView mRecycler; private void init() { List<User> list = new ArrayList<User>(11); for (int i = 0; i < 11; i++) { int id = getResources().getIdentifier("pic" + i, "drawable", getApplication().getPackageName()); list.add(new User(id, "用户" + i)); } UserAdapter adapter = new UserAdapter(this); adapter.setList(list); mRecycler.setAdapter(adapter); }}
还有就是RecyclerView分割线的使用下次在发布一下!!
阅读全文
0 0
- RecyclerView 瀑布流的配置以及它的 StaggeredGridLayoutManager 布局管理器的使用
- RecyclerView采用StaggeredGridLayoutManager布局的瀑布流效果
- 瀑布流 RecycleView 的 StaggeredGridLayoutManager?
- Android RecyclerView 的瀑布流式布局
- RecyclerView的简单使用以及实现瀑布流效果
- RecyclerView和StaggeredGridLayoutManager实现瀑布流向下滑动item跳动、留白的问题
- RecyclerView的瀑布流
- Android RecyclerView的StaggeredGridLayoutManager和CardView
- Android RecyclerView 的基本使用--瀑布流
- 使用RecyclerView展示瀑布流的效果
- 使用StaggeredGridLayoutManager遇见的坑
- RecyclerView做的瀑布流
- RecyclerView重写网格的布局管理器
- 使用RecyclerView实现滑动添加、滑动删除,以及瀑布流、ListView、GridView的转换
- 布局管理器的使用
- 使用StaggeredGridLayoutManager实现瀑布流效果
- 使用StaggeredGridLayoutManager实现瀑布流效果
- 使用StaggeredGridLayoutManager瀑布流,Glide显示图片
- android+OKHTTP
- python高性能web框架Sanic学习--url
- springmvc常用注解标签详解
- SSH实现数据分页显示功能
- 二位数组元素的表示方法
- RecyclerView 瀑布流的配置以及它的 StaggeredGridLayoutManager 布局管理器的使用
- 用python打印三角形和阶梯
- 关于下载文件功能的总结
- 远程连接mysql数据库
- 搭建nginx服务器
- 浅谈java中栈和堆
- Javascript的保留字
- R描述性统计分析
- springboot学习笔记003(jpa)