RecyclerView的基础使用

来源:互联网 发布:js删除class属性 编辑:程序博客网 时间:2024/06/04 18:48

先引入RecyclerView依赖包,V7下的,兼容到API17

compile 'com.android.support:mediarouter-v7:25.0.0'compile 'com.android.support:appcompat-v7:25.0.0'compile 'com.android.support:recyclerview-v7:25.0.0'

Activity的布局

<android.support.v7.widget.RecyclerView    android:id="@+id/id_recyclerview"    android:divider="#ffff0000"    android:dividerHeight="10dp"    android:layout_width="match_parent"    android:layout_height="match_parent" />

item的布局

<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:background="#44ff0000"    android:layout_height="wrap_content" >    <TextView        android:id="@+id/id_num"        android:layout_width="match_parent"        android:layout_height="50dp"        android:gravity="center"        android:text="1" /></FrameLayout>

MainActivity中

public class MainActivity extends AppCompatActivity {    private RecyclerView mRecyclerView;    private List<String> mDatas;    private HomeAdapter mAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initData();        mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);      //mRecyclerView.setLayoutManager(new LinearLayoutManager(this));//listview展示      //mRecyclerView.setLayoutManager(new GridLayoutManager(this,4));//gridview展示        mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));        //设置item之间的间隔        SpacesItemDecoration decoration=new SpacesItemDecoration(30);        mRecyclerView.addItemDecoration(decoration);         //添加适配器        mRecyclerView.setAdapter(mAdapter = new HomeAdapter());        //添加分割线        mRecyclerView.addItemDecoration(new DividerItemDecoration(                MainActivity.this, DividerItemDecoration.VERTICAL        ));        //添加分割线        mRecyclerView.addItemDecoration(new DividerItemDecoration(                MainActivity.this, DividerItemDecoration.HORIZONTAL        ));    }//添加数据 protected void initData()    {        mDatas = new ArrayList<String>();        for (int i = 'A'; i < 'z'; i++)        {            mDatas.add("" + (char) i);        }    }//添加适配器 class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder> {        @Override        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {            MyViewHolder holder = new MyViewHolder(LayoutInflater.from(                    MainActivity.this).inflate(R.layout.item_home, parent,                    false));            return holder;        }        @Override        public void onBindViewHolder(MyViewHolder holder, int position) {            holder.tv.setText(mDatas.get(position));        }        @Override        public int getItemCount() {            return mDatas.size();        }        class MyViewHolder extends RecyclerView.ViewHolder {            TextView tv;            public MyViewHolder(View view) {                super(view);                tv = (TextView) view.findViewById(R.id.id_num);            }        }    }    public class SpacesItemDecoration extends RecyclerView.ItemDecoration {        private int space;        public SpacesItemDecoration(int space) {            this.space=space;        }        @Override        public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {            outRect.left=space;            outRect.right=space;            outRect.bottom=space;            if(parent.getChildAdapterPosition(view)==0){                outRect.top=space;            }        }    }}

原创粉丝点击