RecyclerView学习--初始化RecycleView

来源:互联网 发布:怎么进入万方数据库 编辑:程序博客网 时间:2024/05/16 18:11

1、布局

RecycleView:

    <android.support.v7.widget.RecyclerView        android:id="@+id/rc_list"        android:scrollbars="vertical"        android:layout_width="match_parent"        android:layout_height="wrap_content" />

就像普通控件一样写即可。
item:

<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android"          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:layout_margin="@dimen/item_margin"          android:background="@color/item_color"          android:gravity="center"          android:textSize="@dimen/item_text_size"></TextView>

直接写一个TextView,以后要改为你要的布局即可。

2、Adapter

public class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    private List<String> data;//textview的显示的字符串数据    private OnItemClickListener clickListener;//给RecyclerView添加点击事件    public Adapter(List<String> data) {        this.data = data;    }//初始化时注入数据    public void setOnItemClickListener(OnItemClickListener itemClickListener){//设置注入item点击监听        clickListener = itemClickListener;    }    /**     * 解析布局,并注入到viewHolder     * @return 给下一步提供一个ViewHolder     */    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item,parent,false);        return new ViewHolder(v);    }    /**     * 给ViewHolder里面的控件绑定数据     * @param holder     * @param position     */    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {        ((ViewHolder)holder).textView.setText(data.get(position)+position);    }    @Override    public int getItemCount() {        return data.size();    }    /**     * 内部类ViewHolder,用于保存绑定控件,如果设置了点击事件,给控件设置点击监听     */    class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{        private TextView textView;        public ViewHolder(View itemView) {            super(itemView);            textView = (TextView) itemView;            textView.setOnClickListener(this);        }        @Override        public void onClick(View v) {            if(clickListener!=null){                clickListener.onItemClick(v,getPosition());            }        }    }    /**     * 定义一个接口用于外部实现RecycleView的item的操作     */    public interface OnItemClickListener {        void onItemClick(View v, int position);    }}

4、初始化RecycleView

成员变量:

    private RecyclerView recyclerView;    private List<String> data;    private Adapter adapter;    private RecyclerView.LayoutManager layoutManager;

Adapter和RecycleView绑定:

    private void initRecycleView() {        initData();        recyclerView = (RecyclerView) findViewById(R.id.rc_list);        layoutManager = new LinearLayoutManager(this);        recyclerView.setLayoutManager(layoutManager);        recyclerView.setHasFixedSize(true);        recyclerView.setItemAnimator(new DefaultItemAnimator());        adapter = new Adapter(data);        adapter.setOnItemClickListener(new Adapter.OnItemClickListener() {            @Override            public void onItemClick(final View v, int position) {                v.animate().rotationX(180f).setDuration(300).setListener(new AnimatorListenerAdapter() {                    @Override                    public void onAnimationEnd(Animator animation) {                        super.onAnimationEnd(animation);                        v.animate().rotationX(-0f).setDuration(500).start();                    }                }).start();                Toast.makeText(MainActivity.this,""+position,Toast.LENGTH_SHORT).show();            }        });        recyclerView.setAdapter(adapter);    }

将initRecycleView()方法放在onCreate方法中即可。
这样一个RecycleView就写好了。

0 0
原创粉丝点击