Android--RecyclerView

来源:互联网 发布:dede 做旅游cms 编辑:程序博客网 时间:2024/05/26 15:58

//导入依赖

'com.android.support:recyclerview-v7:27.0.2'MainActicitypackage lx.bwie.com.recyclerview;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.DividerItemDecoration;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.Toast;import adpter.MyAdapter;public class MainActivity extends AppCompatActivity implements MyAdapter.OnItemClickListener{    private RecyclerView rv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        rv = findViewById(R.id.rv);        //设置一个线性布局管理器        //垂直       rv.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));        //水平       // rv.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false));        //设置网格管理器        //rv.setLayoutManager(new GridLayoutManager(this,2,GridLayoutManager.HORIZONTAL,false));        //rv.setLayoutManager(new GridLayoutManager(this,3,GridLayoutManager.VERTICAL,false));        //设置分割线        //rv.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.HORIZONTAL));        rv.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));        //设置适配器        MyAdapter adapter = new MyAdapter(this);        rv.setAdapter(adapter);        //设置点击事件        adapter.setOnItemClickListener(this);    }    @Override    public void setOnItemClick(View view, int position) {        //条目点击事件        Toast.makeText(this, "条目" + position, Toast.LENGTH_SHORT).show();    }    @Override    public void setOnLongItemClick(View view, int position) {        //长按事件        Toast.makeText(this, "长按条目"+position, Toast.LENGTH_SHORT).show();    }}

//Adapte适配器

package adpter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import lx.bwie.com.recyclerview.R;public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {    private Context context;    public MyAdapter(Context context) {        this.context = context;    }    @Override    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(context).inflate(R.layout.item,parent,false);        ViewHolder holder= new ViewHolder(view);        return holder;    }    @Override    public void onBindViewHolder(ViewHolder holder, final int position) {        if (position%2 == 0){            //设置文本            holder.tv.setText("哎呀");        }else{            holder.tv.setText("你妹吧MVP");        }        if (null != onItemClickListener){            //回调点击事件            holder.itemView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    //回调                    onItemClickListener.setOnItemClick(v,position);                }            });            holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {                @Override                public boolean onLongClick(View v) {                    onItemClickListener.setOnLongItemClick(v,position);                    return true;//消费掉                }            });        }    }    @Override    public int getItemCount() {        return 30;    }    //定义自己的事件接口    public interface OnItemClickListener{        //条目点击事件        void setOnItemClick(View view,int position);        //条目长按事件        void setOnLongItemClick(View view, int position);    }    //    private OnItemClickListener onItemClickListener;    public void setOnItemClickListener(OnItemClickListener onItemClickListener){        this.onItemClickListener = onItemClickListener;    }    //声明自己的ViewHolder    class ViewHolder extends RecyclerView.ViewHolder{        private final ImageView img;        private final TextView tv;        public ViewHolder(View itemView) {            super(itemView);            img = itemView.findViewById(R.id.img);            tv = itemView.findViewById(R.id.tv);        }    }}

//布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="lx.bwie.com.recyclerview.MainActivity"><android.support.v7.widget.RecyclerView    android:layout_width="match_parent"    android:layout_height="match_parent"    android:id="@+id/rv"    ></android.support.v7.widget.RecyclerView></LinearLayout>//条目布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="vertical"    >    <ImageView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@mipmap/ic_launcher"        android:id="@+id/img"        />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/tv"        /></LinearLayout>