Listview学习(二)

来源:互联网 发布:ubuntu更新命令 编辑:程序博客网 时间:2024/06/05 05:25

RecyclerView学习


经过之前的学习,对listview的简单实用已经有所了解了。现在来学习一下RecyclerView。顾名思义,recyclerview可以回收移出界面的item,并且在需要时再次显示(具体的实现原理见http://blog.csdn.net/lylodyf/article/details/52846602)。其基本原理与Listview相似,下面先了解其用法。下面是主函数和adapter以及布局的代码:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.bupt.markfavor.demo0914recyclerview.MainActivity">    <android.support.v7.widget.RecyclerView        android:id="@+id/recycler_view"        android:layout_width="match_parent"        android:layout_height="match_parent"/></LinearLayout>

布局里只有一个RecyclerView控件,需要说明的是,要使用RecyclerView需要先在build.gradle(app)当中添加依赖compile ‘com.android.support:recyclerview-v7:25.3.1’。

package com.bupt.markfavor.demo0914recyclerview;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;public class MainActivity extends AppCompatActivity {    private RecyclerView myRecyclerView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        myRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);        myRecyclerView.setLayoutManager(linearLayoutManager);        String[]dataset=new String[100];        for (int i=0;i<dataset.length;i++){            dataset[i]="item"+i;        }        RecyclerAdapter recyclerAdapter = new RecyclerAdapter(dataset);        myRecyclerView.setAdapter(recyclerAdapter);    }}

上边代码的含义:自定义myRecyclerView,通过findviewbyid找到控件;自定义LinearLayoutManager,根据官方文档,其作用是协助recyclerview实现对item的缓存,帮助实现纵向和横向滚动;将LinearLayoutManager绑定在myRecyclerView上;定义一个包括100个元素的一维数组;将数组和adapter绑定,最后把adapter和myRecyclerView绑定。下面说明自定义adapter的过程。

package com.bupt.markfavor.demo0914recyclerview;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;/** * Created by markfavor on 2017/9/14. */public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.Viewholder>{    private String[] mydataset;    public RecyclerAdapter(String[] dataset) {        super();        mydataset=dataset;    }    @Override    public Viewholder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(parent.getContext())                .inflate(android.R.layout.simple_list_item_1,null);        Viewholder viewholder = new Viewholder(view);        return viewholder;    }    @Override    public void onBindViewHolder(Viewholder holder, int position) {        holder.myTextView.setText(mydataset[position]);    }    @Override    public int getItemCount() {        return mydataset.length;    }    static class Viewholder extends RecyclerView.ViewHolder{        TextView myTextView;        public Viewholder(View itemView) {            super(itemView);            myTextView = (TextView) itemView;        }    }}

自定义adapter
1.继承的是RecyclerView.Adapter