android v7兼容包RecyclerView的使用(一)

什么是RecyclerView?个人理解,它是一个在数据量大的时候,为了显示在界面上提供的灵活高效处理的控件。可以替代listview,gallery,gridview等控件。

如何使用?本篇文章只是热热身,不会过多介绍细节。

首先需要导入\sdk\extras\android\support\v7\recyclerview\libs\android-support-v7-recyclerview.jar包,如果sdk目录下没有该文件,则adt版本可能太低,建议升级或者从网上下载该库。

RecyclerView的使用准备多谢几篇,所以这篇只是入门。

国际惯例,先看效果图,此程序实现微信的会话记录界面。

分析一下,该界面的每一项都是由四个组件构成,即图标,标题,描述,时间。所以,开始编写实体类。

package cn.edu.zafu.recyclerviewdemo;/** * 实体类 * @author lizhangqu * * 2015-3-10 */{img;//标题private String title;//描述private String description;//时间private String time;() {return img;}(int img) {this.img = img;}public String getTitle() {return title;}(String title) {this.title = title;}public String getDescription() {return description;}(String description) {this.description = description;}public String getTime() {return time;}(String time) {this.time = time;}@Overridepublic String toString() {return “Item [img=” + img + “, title=” + title + “, description=”+ description + “, time=” + time + “]”;}}

编写完实体类后,开始对每一项的布局进行编写,使用相对布局

====”10dp” ><ImageView==”true”android:background=”@drawable/icon” /><TextView====”16sp” /><TextView===”#777″android:textSize=”12sp” /><TextView===”微信支付:支付成功通知” /></RelativeLayout>

编写适配器,并编写接口处理点击事件

package cn.edu.zafu.recyclerviewdemo;import java.util.List;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import cn.edu.zafu.recyclerviewdemo.RecyclerAdapter.ItemViewHolder;.Adapter<ItemViewHolder> {private List<Item> items;//点击监听事件interface OnRecyclerViewItemClickListener{void onClick(View view,int position);};private OnRecyclerViewItemClickListener listener;(OnRecyclerViewItemClickListener listener) {this.listener = listener;}(List<Item> items) {this.items = items;}() {return items.size();}@Overridepublic ItemViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {//将布局进行绑定View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);return new ItemViewHolder(view);}(final ItemViewHolder viewHolder,final int position) {Item item = items.get(position);viewHolder.img.setImageResource(item.getImg());viewHolder.title.setText(item.getTitle());viewHolder.description.setText(item.getDescription());viewHolder.time.setText(item.getTime());viewHolder.itemView.setOnClickListener(new OnClickListener() {(View v) {if (listener!=null) {listener.onClick(viewHolder.itemView, position);}}});}.ViewHolder {//每一项的四个控件ImageView img;TextView title;TextView description;TextView time;public ItemViewHolder(View itemView) {super(itemView);img = (ImageView) itemView.findViewById(R.id.img);title = (TextView) itemView.findViewById(R.id.title);description = (TextView) itemView.findViewById(R.id.description);time = (TextView) itemView.findViewById(R.id.time);}}}

在Activity中使用,为recyclerview设置适配器,数据改变时的动画,

package cn.edu.zafu.recyclerviewdemo;import java.util.ArrayList;import android.app.Activity;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.Bundle;import android.support.v7.widget.DefaultItemAnimator;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.Toast;import cn.edu.zafu.recyclerviewdemo.RecyclerAdapter.OnRecyclerViewItemClickListener;{private RecyclerView recyclerView;private ArrayList<Item> items = new ArrayList<Item>();(Bundle savedInstanceState) {super.onCreate(savedInstanceState);initDatas();setContentView(R.layout.activity_main);initDatas();//初始化数据initViews();//初始化recyclerview}() {recyclerView = (RecyclerView) findViewById(R.id.recyclerView);//新建适配器RecyclerAdapter adapter = new RecyclerAdapter(items);//设置监听器adapter.setListener(new OnRecyclerViewItemClickListener() {(View view, int position) {Toast.makeText(getApplicationContext(), items.get(position).getTitle(), Toast.LENGTH_LONG).show();}});//设置适配器recyclerView.setAdapter(adapter);//默认动画效果recyclerView.setItemAnimator(new DefaultItemAnimator());//设置布局管理器,第三个参数为是否逆向布局recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));//设置每一项的装饰,这里给它加入分隔线recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {Paint paint = new Paint();(Canvas c, RecyclerView parent,RecyclerView.State state) {super.onDraw(c, parent, state);}(Canvas c, RecyclerView parent,RecyclerView.State state) {super.onDrawOver(c, parent, state);paint.setColor(Color.LTGRAY);for (int i = 0, size = parent.getChildCount(); i < size; i++) {View child = parent.getChildAt(i);c.drawLine(child.getLeft(), child.getBottom(),child.getRight(), child.getBottom(), paint);}}});//可以提高效率recyclerView.setHasFixedSize(true);}() {Item item = new Item();item.setImg(R.drawable.icon);item.setTitle(“微信支付”);item.setDescription(“微信支付:支付成功通知”);item.setTime(“晚上20:35”);items.add(item);item = new Item();item.setImg(R.drawable.icon);item.setTitle(“微信支付”);item.setDescription(“微信支付:支付成功通知”);item.setTime(“晚上20:35”);items.add(item);item = new Item();item.setImg(R.drawable.icon);item.setTitle(“微信支付”);item.setDescription(“微信支付:支付成功通知”);item.setTime(“晚上20:35”);items.add(item);item = new Item();item.setImg(R.drawable.icon);item.setTitle(“微信支付”);item.setDescription(“微信支付:支付成功通知”);item.setTime(“晚上20:35”);items.add(item);item = new Item();item.setImg(R.drawable.icon);item.setTitle(“微信支付”);item.setDescription(“微信支付:支付成功通知”);item.setTime(“晚上20:35”);items.add(item);item = new Item();item.setImg(R.drawable.icon);item.setTitle(“微信支付”);item.setDescription(“微信支付:支付成功通知”);item.setTime(“晚上20:35”);items.add(item);item = new Item();item.setImg(R.drawable.icon);item.setTitle(“微信支付”);item.setDescription(“微信支付:支付成功通知”);item.setTime(“晚上20:35”);items.add(item);}}接受失败等于回归真实的自我,

android v7兼容包RecyclerView的使用(一)

相关文章:

你感兴趣的文章:

标签云: