关于RecyclerView的简单应用教程

来源:互联网 发布:java socket框架 编辑:程序博客网 时间:2024/06/10 08:37

RecyclerView基本已经取代ListView,而且灵活度很高。要怎么去用它呢,其实主要就是把设配器(adapter)给写好就行了。


Adapter代码:

package com.example.administrator.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 MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {    List<Fruit> mlist;    public class ViewHolder extends RecyclerView.ViewHolder{  // 利用RecyvlerView本身的ViewHoler方法进行控件的封装,使fruititem各个控件的实例化        TextView mID;        TextView mName;        public ViewHolder(View itemView) {            super(itemView);    //各控件的实例化            mID = (TextView) itemView.findViewById(R.id.mId);            mName = (TextView) itemView.findViewById(R.id.mName);        }    }    //将列表传进    public MyAdapter(List<Fruit> list){        mlist =list;    }    //加载整个layout布局,创建ViewHolder实例    @Override    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruititem,parent,false);        ViewHolder Holder = new ViewHolder(view);       //把上面的fruititem整个布局中各个控件实例化        return Holder;    }    //onBindViewHolder就是填充数据的过程    @Override    public void onBindViewHolder(ViewHolder holder, int position) {   //此holder指上面ViewHolder通过继承父类所得。        //加载内容进控件        Fruit fruit= mlist.get(position);         //获取list位置,下面开始为控件填充数据        holder.FruitName.setText(fruit.getMname());        holder.FruitID.setText(fruit.getmID());    }    @Override    public int getItemCount() {        return mlist.size();//获取列表总长度    }}
上面的Fruit是一个封装类,里面两个String值,一个是name,一个是Id。

而在布局R.layout.fruititem中为了简单,我直接用了两个TextView。一次可以类推。用其他控件都一样。


而在主函数中的代码,只需要添加:

List<Fruit> mfruitlist = new ArrayList<>();
initFruit();                                //向list添加数据
RecyclerView mrecylerview = (RecyclerView) findViewById(R.id.mrecylerview);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);   
mrecylerview.setLayoutManager(layoutManager);
MyAdapter adapter = new MyAdapter(mfruitlist);
mrecylerview.setAdapter(adapter);

以上就是实现跟之前ListView同样的效果。


而RecyclerView还有新的拓展功能。能实现横向滚动。还有交错分布效果。


横向滚动只需要修改:

List<Fruit> mfruitlist = new ArrayList<>();
initFruit();                                //向list添加数据
RecyclerView mrecylerview = (RecyclerView) findViewById(R.id.mrecylerview);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);   
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);       //多添加这一项,就可以实现横向分布滚动
mrecylerview.setLayoutManager(layoutManager);
MyAdapter adapter = new MyAdapter(mfruitlist);
mrecylerview.setAdapter(adapter);

如图:



要实现交错分布效果,也是只需要修改Activity的代码换个LayoutManager:

就把LinearLayoutManager切掉。

StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(5,StaggeredGridLayoutManager.VERTICAL);//这里的5指的是把布局分为五纵列
mrecylerview.setLayoutManager(layoutManager);
如果把StaggeredGridLayoutManager里面的VERTICAL换成 HORIZONTAL

则这里的数字5就是把布局分成5横列,横向滚动数据。

效果如图:

Vertical       Horizontal

             


0 0
原创粉丝点击