Recyclerview系列(1)--基础使用

来源:互联网 发布:mac安装win10激活码 编辑:程序博客网 时间:2024/06/06 01:04

1.引入

dependencies {

//compile ‘com.android.support:cardview-v7:23.1.1’
compile ‘com.android.support:recyclerview-v7:23.1.1’
}

2.XML:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <android.support.v7.widget.RecyclerView        android:id="@+id/recycler_standard"        android:layout_width="fill_parent"        android:layout_height="fill_parent" >    </android.support.v7.widget.RecyclerView></LinearLayout>

3.代码内调用:

RecyclerView  recyclerView =        (RecyclerView) findViewById(R.id.recycler_standard);recyclerView.setLayoutManager(new StaggeredGridLayoutManager(3,                StaggeredGridLayoutManager.VERTICAL));// 设置item之间的间隔MyStandardItemDecoration decoration = new MyStandardItemDecoration(20);recyclerView.addItemDecoration(decoration);// 设置动画recyclerView.setItemAnimator(new DefaultItemAnimator());mStandardRecyclerViewAdapter adapter =                      new mStandardRecyclerViewAdapter();// 设置adapterrecyclerView.setAdapter(adapter);

4.adapter:

class mStandardRecyclerViewAdapter extends  RecyclerView.Adapter<mStandardViewHolder> {        @Override        public int getItemCount() {            return datasources.size();        }        /**         * 这里holder.textview.settext("XXXX");         * */        @Override        public void onBindViewHolder(mStandardViewHolder holder, int position) {            holder.tv_word.setText(datasources.get(position));            // LayoutParams layoutParams = subview.getLayoutParams();            // layoutParams.height = dataheights.get(position);            // subview.setLayoutParams(layoutParams);            LayoutParams layoutParams = holder.ll_blue_rec_back                    .getLayoutParams();            layoutParams.height = dataheights.get(position);            holder.ll_blue_rec_back.setLayoutParams(layoutParams);        }        /**         * 这里边初始化 view ... layout         * */        @Override        public mStandardViewHolder onCreateViewHolder(ViewGroup viewgroup,                int position) {            View subview = View.inflate(MyDemosApplication.mContext,                    R.layout.tv_item, null);            return new mStandardViewHolder(subview);        }    }

5.ViewHolder:

  /**     * viewholder     * */    class mStandardViewHolder extends ViewHolder {        TextView tv_word = null;        LinearLayout ll_blue_rec_back = null;        public mStandardViewHolder(View itemview) {            super(itemview);            tv_word = (TextView) itemview.findViewById(R.id.word_tv);            ll_blue_rec_back = (LinearLayout) itemview                    .findViewById(R.id.ll_blue_rec_back);        }    }

6.分割线:

 /**     * 分割线     * */    class MyStandardItemDecoration extends ItemDecoration {        int space = 0;        public MyStandardItemDecoration(int space) {            super();        }        /**         * 设置分隔大小         * */        @Override        public void getItemOffsets(Rect outRect, View view,                RecyclerView parent, RecyclerView.State state) {            outRect.set(space, space, space, space);        }        /**         * 重绘分割线风格         * */        @Override        public void onDrawOver(Canvas c, RecyclerView parent, State state) {            super.onDrawOver(c, parent, state);        }    }

7.点击事件:

/**  * viewholder  :item的findviewbyid  */class mStandardViewHolder extends RecyclerView.ViewHolder {    TextView tv_word = null;    RelativeLayout ll_blue_rec_back = null;      public mStandardViewHolder(View itemview) {         super(itemview);         tv_word = (TextView) itemview.findViewById(R.id.item_answer_text);         ll_blue_rec_back = (RelativeLayout) itemview.findViewById(R.id.item_back);                   itemview.setOnClickListener(new View.OnClickListener() {               @Override public void onClick(View v) {                   System.out.println("当前点击位置是" + getPosition());                                   Toast.makeText(GuessApplication.GlobleContext, "当前点击位置是" + getPosition(),                                         Toast.LENGTH_SHORT); }        });     }}
原创粉丝点击