Android RecyclerView使用Demo
来源:互联网 发布:兄弟连php就业班项目 编辑:程序博客网 时间:2024/04/29 22:42
1.RecyclerView,源码中的定义:
A flexible view for providing a limited window into a large data set.
简单的说法就是在有限的空间里展示大量的数据。
2.使用前准备:
(1).首先要建立两个layout文件:一个是引入RecyclerView组件,另一个是RecyclerView中的item布局,这一点跟ListView类似。
引入RecyclerView组件(fragment_reports_list.xml,该文件中需要引用item的布局文件):
<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.RecyclerView 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:id="@+id/list"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginLeft="16dp"android:layout_marginRight="16dp"app:layoutManager="LinearLayoutManager"//引用item的布局文件tools:listitem="@layout/fragment_news" />
RecyclerView中的item布局(fragment_news.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="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/text_margin" android:textAppearance="?attr/textAppearanceListItem" /> <TextView android:id="@+id/content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/text_margin" android:textAppearance="?attr/textAppearanceListItem" /></LinearLayout>
(2):同ListView一样,RecyclerView也需要实现自己的adapter,只是RecyclerView的adapter需要继承RecyclerView.Adapter而不是BaseAdapter。实现RecyclerView的adapter:
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder>{ List<DummyContent.DummyItem> list; public MyRecyclerViewAdapter(List<DummyContent.DummyItem> list){ this.list = list; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_news, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.mItem = list.get(position); final String itemId = list.get(position).id; holder.mIdView.setText(list.get(position).id); holder.mContentView.setText(list.get(position).content); holder.mContentView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //组件点击事件 } }); } @Override public int getItemCount() { return list.size(); } public class ViewHolder extends RecyclerView.ViewHolder{ public final View mView; public final TextView mIdView; public final TextView mContentView; public DummyContent.DummyItem mItem; public ViewHolder(View view) { super(view); mView = view; mIdView = (TextView) view.findViewById(R.id.id); mContentView = (TextView) view.findViewById(R.id.content); } @Override public String toString() { return super.toString() + " '" + mContentView.getText() + "'"; } } }
这里的DummyContent.DummyItem和DummyContent使用官方demo自带的定义类:
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * Helper class for providing sample content for user interfaces created by * Android template wizards. * <p/> * TODO: Replace all uses of this class before publishing your app. */public class DummyContent { /** * An array of sample (dummy) items. */ public static final List<DummyItem> ITEMS = new ArrayList<DummyItem>(); /** * A map of sample (dummy) items, by ID. */ public static final Map<String, DummyItem> ITEM_MAP = new HashMap<String, DummyItem>(); private static final int COUNT = 25; static { // Add some sample items. for (int i = 1; i <= COUNT; i++) { addItem(createDummyItem(i)); } } private static void addItem(DummyItem item) { ITEMS.add(item); ITEM_MAP.put(item.id, item); } private static DummyItem createDummyItem(int position) { return new DummyItem(String.valueOf(position), "Item " + position, makeDetails(position)); } private static String makeDetails(int position) { StringBuilder builder = new StringBuilder(); builder.append("Details about Item: ").append(position); for (int i = 0; i < position; i++) { builder.append("\nMore details information here."); } return builder.toString(); } /** * A dummy item representing a piece of content. */ public static class DummyItem { public final String id; public final String content; public final String details; public DummyItem(String id, String content, String details) { this.id = id; this.content = content; this.details = details; } @Override public String toString() { return content; } }}
(3).最后就是在fragment或者activity中开始使用RecyclerView:
View view = inflater.inflate(R.layout.fragment_reports_list, container, false);RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.list);MyRecyclerViewAdapter adapter = new MyRecyclerViewAdapter(DummyContent.ITEMS);recyclerView.setAdapter(adapter);
利用Android studio新建工程时选择Master/Detail Flow时可以自动生成关于RecyclerView的demo。
0 0
- Android RecyclerView使用Demo
- 简单的Android RecyclerView 使用小Demo
- RecyclerView 使用 和简单demo
- 使用RecyclerView编写聊天界面及demo
- ANDROID L——RecyclerView,CardView导入和使用(Demo)
- ANDROID L——RecyclerView,CardView导入和使用(Demo)
- ANDROID L——RecyclerView,CardView导入和使用(Demo)
- ANDROID L——RecyclerView,CardView导入和使用(Demo)
- ANDROID L——RecyclerView,CardView导入和使用(Demo)
- ANDROID L——RecyclerView,CardView导入和使用(Demo)
- ANDROID L——RecyclerView,CardView导入和使用(Demo)
- Android L——RecyclerView,CardView导入和使用(Demo)
- Android L——RecyclerView,CardView导入和使用(Demo)
- Android 5.0 RecyclerView 使用
- Android RecyclerView使用
- Android RecyclerView 使用详解
- Android -- RecyclerView的使用
- Android RecyclerView 使用解析
- 【bzoj4584】[Apio2016]赛艇 dp
- freemarker利用word模版导出word文档
- 最大似然估计和最大后验估计
- 专题三1017
- Unreal 学习笔记之 --- 排错汇总
- Android RecyclerView使用Demo
- 链表归并排序
- AngularJS 中ng-class 使用
- JAVA反射
- 【WG面试算法】一个有getMin功能的栈
- AJAX中readyState(当前状态)和status(状态码)表示含义
- CSS学习之选择器 - CSS: The Missing Manual
- MacOsx自动安装工具:brew
- iOS 手势操作:拖动、捏合、旋转、点按、长按、轻扫、自定义