参考
RecyclerView技术栈
Android RecyclerView 使用完全解析 体验艺术般的控件
[Android]使用RecyclerView替代ListView(一)

一、

RecyclerAdapter.java:

package com.xys.myapplication;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import java.util.List;public class RecyclerAdapter        extends RecyclerView.Adapter {    private List mData;    public RecyclerAdapter(List data) {        mData = data;    }    public OnItemClickListener itemClickListener;    public void setOnItemClickListener(            OnItemClickListener itemClickListener) {        this.itemClickListener = itemClickListener;    }    public interface OnItemClickListener {        void onItemClick(View view, int position);    }    public class ViewHolder extends RecyclerView.ViewHolder            implements View.OnClickListener {        public TextView textView;        public ViewHolder(View itemView) {            super(itemView);            textView = (TextView) itemView;            textView.setOnClickListener(this);        }        // 通过接口回调来实现RecyclerView的点击事件        @Override        public void onClick(View v) {            if (itemClickListener != null) {                itemClickListener.onItemClick(v, getPosition());            }        }    }    @Override    public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {        // 将布局转化为View并传递给RecyclerView封装好的ViewHolder        View v = LayoutInflater.from(viewGroup.getContext()).inflate(                R.layout.rc_item, viewGroup, false);        return new ViewHolder(v);    }    @Override    public void onBindViewHolder(ViewHolder viewHolder, int i) {        // 建立起ViewHolder中视图与数据的关联        viewHolder.textView.setText(mData.get(i) + i);    }    @Override    public int getItemCount() {        return mData.size();    }}

layout/rc_item.xml

<?xml version="1.0" encoding="utf-8"?>

RecyclerTest.java

package com.xys.myapplication;import android.animation.Animator;import android.animation.AnimatorListenerAdapter;import android.app.Activity;import android.os.Bundle;import android.support.v7.widget.DefaultItemAnimator;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.AdapterView;import android.widget.Spinner;import java.util.ArrayList;import java.util.List;public class RecyclerTest extends Activity {    private RecyclerView mRcList;    private RecyclerAdapter mAdapter;    private RecyclerView.LayoutManager mLayoutManager;    private Spinner mSpinner;    private List mData = new ArrayList();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.recycler);        mRcList = (RecyclerView) findViewById(R.id.rc_list);        mLayoutManager = new LinearLayoutManager(this);        mRcList.setLayoutManager(mLayoutManager);        mRcList.setHasFixedSize(true);        // 设置显示动画        mRcList.setItemAnimator(new DefaultItemAnimator());        mSpinner = (Spinner) findViewById(R.id.spinner);        mSpinner.setOnItemSelectedListener(                new AdapterView.OnItemSelectedListener() {                    @Override                    public void onItemSelected(AdapterView<?> parent,                                               View view,                                               int position,                                               long id) {                        if (position == 0) {                            mRcList.setLayoutManager(                                    // 设置为线性布局                                    new LinearLayoutManager(                                            RecyclerTest.this));                        } else if (position == 1) {                            mRcList.setLayoutManager(                                    // 设置为表格布局                                    new GridLayoutManager(                                            RecyclerTest.this, 3));                        } else if (position == 2) {                        }                    }                    @Override                    public void onNothingSelected(AdapterView<?> parent) {                    }                });        // 增加测试数据        mData.add("Recycler");        mData.add("Recycler");        mData.add("Recycler");        mAdapter = new RecyclerAdapter(mData);        mRcList.setAdapter(mAdapter);        mAdapter.setOnItemClickListener(            new RecyclerAdapter.OnItemClickListener() {                @Override                public void onItemClick(final View view, int position) {                    // 设置点击动画                    view.animate()                    .translationZ(15F).setDuration(300)                    .setListener(new AnimatorListenerAdapter() {                        @Override                        public void onAnimationEnd(Animator animation) {                            super.onAnimationEnd(animation);                            view.animate()                                    .translationZ(1f)                                    .setDuration(500).start();                        }                    }).start();                }            });    }    public void addRecycler(View view) {        mData.add("Recycler");        int position = mData.size();        if (position > 0) {            mAdapter.notifyDataSetChanged();        }    }    public void delRecycler(View view) {        int position = mData.size();        if (position > 0) {            mData.remove(position - 1);            mAdapter.notifyDataSetChanged();        }    }}

更多相关文章

  1. android生命周期的例子
  2. android带图片的AlertDialog和文件管理器(代码)
  3. Android(安卓)TextView跑马灯抖动问题
  4. Android:configChanges 属性
  5. Android(安卓)Button 点击时替换背景颜色和替换当前图标
  6. Android中设置文本颜色的三种方法
  7. 在LinearLayout中嵌套RelativeLayout来设置Button的位置(xml文件)
  8. android style 退出动画 解决退出动画无效问题
  9. 介绍一个Android开源项目:GifView——Android显示GIF动画

随机推荐

  1. Android ui基础——gravity 与 layout_gr
  2. Android SDCard Mount 流程分析(一)
  3. Android inputType ,软键盘输入类型
  4. android EditText中的inputType
  5. Android中Input型输入设备驱动原理分析
  6. Android,谁动了我的内存(转)
  7. 第十章、Android的消息机制
  8. RelativeLayout 相对布局
  9. Android之NDK开发修补版
  10. 【译】Google官方推出的Android架构组件