参考
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计算器布局(TableLayout)
  3. android style 退出动画 解决退出动画无效问题
  4. 介绍一个Android开源项目:GifView——Android显示GIF动画
  5. XamarinAndroid组件教程RecylerView动画组件使用动画(3)
  6. Android 的补间动画
  7. 四大布局
  8. android开发4:Android布局管理器1(线性布局,相对布局RelativeLayou
  9. RelativeLayout(相对布局)

随机推荐

  1. Android DEX方法超过64K和gradle编译OOM
  2. Android中汉字转拼音的内存优化处理
  3. actionbar与viewpager的联合使用(android
  4. android获取系统铃声并播放
  5. The Busy Coder's Guide to Android(安卓
  6. Android 控件随意拖动
  7. Android ImageView显示网络图片
  8. Android 照相机的实例应用
  9. Android中模拟器如何访问本地mysql数据库
  10. Enable Geolocation in a WebView (Andro