Android 开发之 RecyclerView Adapter 模板
来源:互联网 发布:java -classpath 命令 编辑:程序博客网 时间:2024/06/08 02:10
之前 ListView 控件的功能已足够强大;如今出来许久的 RecyclerView 基本上已经覆盖了它的很多功能,先写我们看看效果图:
1,先在 app 文件夹下的build.gradle 文件添加:
compile 'com.android.support:recyclerview-v7:25.2.0'
2,主布局文件:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.gyq.recyclerviewdemo.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent"/></RelativeLayout>
3,item 布局文件(根据不同分格,做出相应的变化):
<?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:layout_margin="5dp"> <ImageView android:id="@+id/fruit_image" android:layout_width="80dp" android:layout_height="80dp" android:layout_gravity="center_vertical"/> <TextView android:id="@+id/fruit_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="10dp"/></LinearLayout>
4,FruitAdapter.java
package com.gyq.recyclerviewdemo.adapter;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 com.gyq.recyclerviewdemo.R;import com.gyq.recyclerviewdemo.entity.Fruit;import java.util.List;/** * Created by gyq on 2017/6/14 09:16 */public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> { private List<Fruit> mFruitInfos; static class ViewHolder extends RecyclerView.ViewHolder { ImageView fruitImage; TextView fruitName; public ViewHolder(View itemView) { super(itemView); fruitImage = (ImageView)itemView.findViewById(R.id.fruit_image); fruitName = (TextView)itemView.findViewById(R.id.fruit_name); } } public FruitAdapter(List<Fruit> fruitInfos) { this.mFruitInfos = fruitInfos; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_fruitlist, parent, false); ViewHolder holder = new ViewHolder(view); return holder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { Fruit fruit = mFruitInfos.get(position); holder.fruitImage.setImageResource(fruit.getImageId()); holder.fruitName.setText(fruit.getName()); } @Override public int getItemCount() { return mFruitInfos.size(); }}
5,Fruit.java 实体类
package com.gyq.recyclerviewdemo.entity;/** * Created by gyq on 2017/6/13 14:44 */public class Fruit { private String name; private int imageId; public Fruit(String name, int imageId) { this.imageId = imageId; this.name = name; } public int getImageId() { return imageId; } public String getName() { return name; }}
6,MainActivity.java
public class MainActivity extends AppCompatActivity { private List<Fruit> mInfos = new ArrayList<>(); private RecyclerView mRecyclerView; private CommonAdapter<Fruit> mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initDatas(); mRecyclerView = (RecyclerView)findViewById(R.id.recycler_view); LinearLayoutManager manager = new LinearLayoutManager(this); //横向滚动 //manager.setOrientation(LinearLayoutManager.HORIZONTAL); //网格布局 //GridLayoutManager manager = new GridLayoutManager(this,3); //瀑布流 //StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL); mRecyclerView.setLayoutManager(manager); FruitAdapter adapter = new FruitAdapter(mInfos); mRecyclerView.setAdapter(adapter); } private void initDatas() { for (int i = 0;i < 2;i++) { Fruit apple = new Fruit("Apple",R.drawable.apple); mInfos.add(apple); Fruit apricot = new Fruit("Apricot",R.drawable.apricot); mInfos.add(apricot); Fruit banana = new Fruit("Banana",R.drawable.banana); mInfos.add(banana); Fruit cherry = new Fruit("Cherry",R.drawable.cherry); mInfos.add(cherry); Fruit kiwi = new Fruit("Kiwi",R.drawable.kiwi); mInfos.add(kiwi); Fruit lemon = new Fruit("Lemon",R.drawable.lemon); mInfos.add(lemon); Fruit mango = new Fruit("Mango",R.drawable.mango); mInfos.add(mango); Fruit orange = new Fruit("Orange",R.drawable.orange); mInfos.add(orange); Fruit peach = new Fruit("Peach",R.drawable.peach); mInfos.add(peach); Fruit pear = new Fruit("Pear",R.drawable.pear); mInfos.add(pear); Fruit strawberry = new Fruit("Strawberry",R.drawable.strawberry); mInfos.add(strawberry); Fruit tomato = new Fruit("Tomato",R.drawable.tomato); mInfos.add(tomato); } } private String getRandomLengthName(String name) { Random random = new Random(); int length = random.nextInt(20) + 1; StringBuilder builder = new StringBuilder(); for (int i = 0;i < length;i++) { builder.append(name); } return builder.toString(); }}
使用万能适配器
1,先在 app 文件夹下的build.gradle 文件添加:
compile 'com.zhy:base-rvadapter:3.0.3'
2,直接使用:
package com.gyq.recyclerviewdemo;import android.os.Bundle;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.DividerItemDecoration;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.TextView;import android.widget.Toast;import com.gyq.recyclerviewdemo.entity.Fruit;import com.zhy.adapter.recyclerview.CommonAdapter;import com.zhy.adapter.recyclerview.base.ViewHolder;import com.zhy.adapter.recyclerview.wrapper.HeaderAndFooterWrapper;import com.zhy.adapter.recyclerview.wrapper.LoadMoreWrapper;import java.util.ArrayList;import java.util.List;import java.util.Random;public class MainActivity extends AppCompatActivity { private List<Fruit> mInfos = new ArrayList<>(); private RecyclerView mRecyclerView; private CommonAdapter<Fruit> mAdapter; private HeaderAndFooterWrapper mHeaderAndFooterWrapper; private LoadMoreWrapper mLoadMoreWrapper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initDatas(); mRecyclerView = (RecyclerView)findViewById(R.id.recycler_view); LinearLayoutManager manager = new LinearLayoutManager(this); //横向滚动 //manager.setOrientation(LinearLayoutManager.HORIZONTAL); //网格布局 //GridLayoutManager manager = new GridLayoutManager(this,3); //瀑布流 //StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL); mRecyclerView.setLayoutManager(manager); //添加分隔线 mRecyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL)); /*FruitAdapter adapter = new FruitAdapter(mInfos); mRecyclerView.setAdapter(adapter);*/ mAdapter = new CommonAdapter<Fruit>(this,R.layout.item_fruitlist,mInfos) { @Override protected void convert(ViewHolder holder, Fruit fruit, int position) { holder.setText(R.id.fruit_name,fruit.getName()); holder.setImageResource(R.id.fruit_image,fruit.getImageId()); } }; initHeaderAndFooter(); mLoadMoreWrapper = new LoadMoreWrapper(mHeaderAndFooterWrapper); mLoadMoreWrapper.setLoadMoreView(R.layout.default_loading); mLoadMoreWrapper.setOnLoadMoreListener(new LoadMoreWrapper.OnLoadMoreListener() { @Override public void onLoadMoreRequested() { new Handler().postDelayed(new Runnable() { @Override public void run() { for (int i = 0;i < 10;i++) { Fruit apple = new Fruit("Apple",R.drawable.apple); mInfos.add(apple); } mLoadMoreWrapper.notifyDataSetChanged(); } }, 3000); } }); mRecyclerView.setAdapter(mLoadMoreWrapper); mAdapter.setOnItemClickListener(new CommonAdapter.OnItemClickListener() { @Override public void onItemClick(View view, RecyclerView.ViewHolder holder, int position) { Toast.makeText(MainActivity.this, "pos = " + position, Toast.LENGTH_SHORT).show(); mAdapter.notifyItemRemoved(position); } @Override public boolean onItemLongClick(View view, RecyclerView.ViewHolder holder, int position) { return false; } }); } private void initHeaderAndFooter() { mHeaderAndFooterWrapper = new HeaderAndFooterWrapper(mAdapter); TextView t1 = new TextView(this); t1.setText("Header 1"); TextView t2 = new TextView(this); t2.setText("Header 2"); mHeaderAndFooterWrapper.addHeaderView(t1); mHeaderAndFooterWrapper.addHeaderView(t2); } private void initDatas() { for (int i = 0;i < 2;i++) { Fruit apple = new Fruit("Apple",R.drawable.apple); mInfos.add(apple); Fruit apricot = new Fruit("Apricot",R.drawable.apricot); mInfos.add(apricot); Fruit banana = new Fruit("Banana",R.drawable.banana); mInfos.add(banana); Fruit cherry = new Fruit("Cherry",R.drawable.cherry); mInfos.add(cherry); Fruit kiwi = new Fruit("Kiwi",R.drawable.kiwi); mInfos.add(kiwi); Fruit lemon = new Fruit("Lemon",R.drawable.lemon); mInfos.add(lemon); Fruit mango = new Fruit("Mango",R.drawable.mango); mInfos.add(mango); Fruit orange = new Fruit("Orange",R.drawable.orange); mInfos.add(orange); Fruit peach = new Fruit("Peach",R.drawable.peach); mInfos.add(peach); Fruit pear = new Fruit("Pear",R.drawable.pear); mInfos.add(pear); Fruit strawberry = new Fruit("Strawberry",R.drawable.strawberry); mInfos.add(strawberry); Fruit tomato = new Fruit("Tomato",R.drawable.tomato); mInfos.add(tomato); } } private String getRandomLengthName(String name) { Random random = new Random(); int length = random.nextInt(20) + 1; StringBuilder builder = new StringBuilder(); for (int i = 0;i < length;i++) { builder.append(name); } return builder.toString(); }}
阅读全文
0 0
- Android 开发之 RecyclerView Adapter 模板
- Android开发之ListView Adapter 模板
- Android开发模板------RecyclerView简介
- Android开发之adapter
- Android——RecyclerView入门学习之RecyclerView.Adapter
- Android快速开发之Adapter
- Android开发基础之Adapter
- Android开发模板------RecyclerView的使用
- android之实现万能适配RecyclerView的adapter
- android开发笔记之RecyclerView
- RecyclerView 封装Adapter之BaseRecyclerAdapter
- Android 封装RecyclerView的Adapter
- Android RecyclerView设计通用Adapter
- Android RecyclerView通用Adapter封装
- Android-UI开发之Adapter及Adapter控件
- Android开发之:Adapter的继承结构
- Android开发之:Adapter的继承结构
- Android开发之:Adapter的继承结构
- eclipse使用之修改工作空间的字符集
- c语言中[Error] variable or field 'CreatList' declared void错误原因分析
- Java的引用类型转换
- Windows下Apache WebDav的开启及使用
- JS验证代码大全(部分未经过验证,自行验证)
- Android 开发之 RecyclerView Adapter 模板
- Lodop相关打印问题
- 追求卓越之--arm MMU详解
- Android7.0中文文档 -- GridLayout
- JavaScript商城购物车结算/收货/小计和加减/表单验证
- Java中的反射机制
- SQL解析之硬解析和软解析
- 深度理解依赖注入(Dependence Injection)(IOC,Inversion of control,控制反转)
- 在Servlet中使用开源fileupload包实现文件上传功能