RecyclerView

来源:互联网 发布:java枚举单例模式 编辑:程序博客网 时间:2024/05/01 11:50
第一步导RecyclerView V7的包 并修改对应的版本
public class MainActivity extends AppCompatActivity {    private RecyclerView recyclerview;    private LinearLayoutManager manager;    private GridLayoutManager gridLayoutManager;    private StaggeredGridLayoutManager staggeredGridLayoutManager;    private Myadapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //找到控件        recyclerview = (RecyclerView) findViewById(R.id.recyclerview);        //分别创建 LinearLayoutManager  GridLayoutManager,        // 在这里 相当于一个展示的是ListView一个是GridView        manager = new LinearLayoutManager(this);        //给它创建3列        gridLayoutManager = new GridLayoutManager(this, 3);         //  可以通过setSpanSizeLookup 来自定义每个item占的列数        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {            @Override            public int getSpanSize(int position) {                return 3 - position % 3;            }        });        //瀑布流的形式        staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);        recyclerview.setLayoutManager(manager);        //添加        adapter = new Myadapter();        recyclerview.setAdapter(adapter);    }    //创建一个按钮来实现点击改变,要变换界面的样子    public void btn_change(View v) {        //切换布局        RecyclerView.LayoutManager layoutmanager = recyclerview.getLayoutManager();        if (layoutmanager == null) {            return;        }        //if和elseif是有先后顺序的,先判断范围小的,然后再判断范围大的,        //因为GridLayoutManager 是继承 LinearLayoutManager ,所以他本质上也是LinearLayoutManager,        //所以不能先判断是否是LinearLayoutManager (LinearLayoutManager范围大)        if (layoutmanager instanceof GridLayoutManager) {            recyclerview.setLayoutManager(manager);        } else if (layoutmanager instanceof LinearLayoutManager) {            recyclerview.setLayoutManager(gridLayoutManager);        }    }}
public class Myadapter extends RecyclerView.Adapter<Myadapter.MyViewHolder> {    //创建一个Arraylist集合用来显示条目    private ArrayList<String> list;    public Myadapter() {        list = new ArrayList<>();        for (int i = 0; i < 30; i++) {            list.add("条目" + i);        }    }    //创建ViewHolder的每条item    @Override    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View recyclerViewItem = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_item, null);        return new MyViewHolder(recyclerViewItem);    }    //绑定数据    @Override    public void onBindViewHolder(MyViewHolder holder, int position) {        holder.tv_title.setText(list.get(position));        if (position % 2 == 0) {            holder.img_view.setImageResource(R.mipmap.ic_launcher);        }    }    //得到条目数    @Override    public int getItemCount() {        return list.size();    }    //创建一个MyViewHolder类在这里找到控件    public class MyViewHolder extends RecyclerView.ViewHolder {        private final TextView tv_title;        private final ImageView img_view;        public MyViewHolder(View itemView) {            super(itemView);            //findviewById 给控件绑定id            tv_title = (TextView) itemView.findViewById(R.id.tv_title);            img_view = (ImageView) itemView.findViewById(R.id.img_view);        }    }}

原创粉丝点击