recycler接口回调简单使用

来源:互联网 发布:apm源码分析 编辑:程序博客网 时间:2024/06/06 18:06
在studio中导入依赖包
com.android.support:recyclerview-v7:26.0.0-alpha1
并把recyclerview的版本改成同你版本适用的
接下来布局中引入
android.support.v7.widget.RecyclerView
<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.day2recyclerand.MainActivity">    <android.support.v7.widget.RecyclerView        android:id="@+id/rv"        android:layout_width="match_parent"        android:layout_height="match_parent">    </android.support.v7.widget.RecyclerView></RelativeLayout>
接下来就是主Activity了,里面还做了接口回调
package com.example.day2recyclerand;import android.content.Context;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    RecyclerView rv;    List<String> list;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initData();    }//初始化视图    private void initView() {        rv= (RecyclerView) findViewById(R.id.rv);        list=new ArrayList<String>();    }
//初始化数据源
//创建一个假的数据源,0~100;    public void initData(){        for (int i = 0; i < 100; i++) {            list.add("postion"+i);        }
//设置一个recycle数据展示的方向       LinearLayoutManager manager=new LinearLayoutManager(this);        rv.setLayoutManager(manager);
//设置适配器        myAdapter adapter=new myAdapter();        rv.setAdapter(adapter);
//接口回调的方法并吐司        adapter.setOnItemClickListener(new OnItemClickListener() {            @Override            public void OnItemClick(int postion) {                Toast.makeText(MainActivity.this,"postion"+postion,Toast.LENGTH_SHORT).show();            }        });    }
//创建适配器    class myAdapter extends RecyclerView.Adapter<myAdapter.ViewHolder>{        OnItemClickListener listener;        public void setOnItemClickListener(OnItemClickListener listener){            this.listener=listener;        }        @Override        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {            View v=View.inflate(MainActivity.this,R.layout.rv_item,null);            //第一种点击取值//            v.setOnClickListener(new View.OnClickListener() {//                @Override//                public void onClick(View view) {//                    if(listener!=null){//                        listener.OnItemClick((int)view.getTag());//                    }else{//                        Toast.makeText(MainActivity.this,"listener空了",Toast.LENGTH_SHORT).show();//                    }////                }//            });            return new ViewHolder(v);        }        @Override        public void onBindViewHolder(final ViewHolder holder, int position) {            holder.tv.setText(list.get(position));//            holder.itemView.setTag(position);            //第二种点击取值            holder.itemView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View view) {                    int pos=holder.getPosition();                    listener.OnItemClick(pos);                }            });        }        @Override        public int getItemCount() {            return list==null?0:list.size();        }        public class ViewHolder extends RecyclerView.ViewHolder {            TextView tv;            public ViewHolder(View itemView) {                super(itemView);                tv=itemView.findViewById(R.id.tv);            }        }    }
//设置接口    public  interface  OnItemClickListener{        public void OnItemClick(int postion);    }}
//简单简绍:
随着技术的提升,recycle逐渐代替了listview和GridView,其优点可操控性较大,宽高调整方便,页面更加美观,
缺点就是没有s
etHeadView,还的自己定义,这点比较麻烦一点,
整体来说recycle是比较方便用于开发的;
只是自己的一点简单理解,如有错误之处,还请大神们不吝赐教;
原创粉丝点击