Android RecyclerView基本运用

1.首先在build.gradle文件中引入该类。

implementation 'com.android.support:recyclerview-v7:27.1.1'

 2.设置布局文件

2.1Activity布局文件activity_rv.xml

<?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"
    tools:context=".MainActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />

</RelativeLayout>

  3.Item布局文件item_view.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="@color/LTGRAY"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/id_num"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:gravity="center"
        android:text="1" />

    <TextView
        android:id="@+id/id_data"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:gravity="center"
        android:text="1" />
</LinearLayout>

3.创建适配器

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.ArrayMap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.hzz.recyclerview.MainActivity;
import com.example.hzz.recyclerview.R;


public class ItemsAdapter extends RecyclerView.Adapter<ItemsAdapter.MyViewHolder> {
    private LayoutInflater inflater;
    private Context mContext;
    ArrayMap<String, String> datas;
    private OnItemClickLitener mOnItemClickLitener;

    //创建构造参数
    public ItemsAdapter(Context mContext, ArrayMap<String, String> datas) {

    }

    public ItemsAdapter(MainActivity mContext, android.util.ArrayMap<String, String> datas) {
        this.mContext = mContext;
        this.datas = datas;
        inflater = LayoutInflater.from(mContext);
    }


    public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) {
        this.mOnItemClickLitener = mOnItemClickLitener;
    }

    public interface OnItemClickLitener {
        void onItemClick(View view, int position);

        void onItemLongClick(View view, int position);
    }

    //创建ViewHolder
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = inflater.inflate(R.layout.item_view, parent, false);
        MyViewHolder viewHolder = new MyViewHolder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, int position) {
        //为textview 赋值
        holder.pc_listmun.setText(String.valueOf(datas.keyAt(position)));
        holder.pc_listdata.setText(String.valueOf(datas.valueAt(position)));
        if (mOnItemClickLitener != null) {
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    int pos = holder.getLayoutPosition();
                    mOnItemClickLitener.onItemClick(holder.itemView, pos);
                }
            });
            holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    int pos = holder.getLayoutPosition();
                    mOnItemClickLitener.onItemLongClick(holder.itemView, pos);
                    return false;
                }
            });
        }


    }

    @Override
    public int getItemCount() {
        return datas.size();

    }

    //新增item
    public void addData(String data, String num) {
        datas.put(data, num);
        //如果item项有1相同的数据则修改,否则插入。
        if (num == "1") {
            //插入
            notifyItemInserted(datas.indexOfKey(data));
        } else {
            //增加
            notifyItemChanged(datas.indexOfKey(data));
        }
    }

    public void notifyDataSet() {
        notifyDataSetChanged();
    }

    //移除item
    public void deleateData(String data, int num) {
        datas.remove(data);
        //notifyItemRemoved(data);
        notifyDataSetChanged();
    }


    class MyViewHolder extends RecyclerView.ViewHolder {
        TextView pc_listdata, pc_listmun;

        public MyViewHolder(View itemView) {
            super(itemView);
            pc_listmun = (TextView) itemView.findViewById(R.id.id_num);
            pc_listdata = (TextView) itemView.findViewById(R.id.id_data);
        }
    }
}

4.MainActivity主要代码

import android.annotation.SuppressLint;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
import android.support.v7.widget.RecyclerView;
import android.util.ArrayMap;
import android.view.View;
import android.widget.Toast;

import com.example.hzz.recyclerview.adapter.ItemsAdapter;

public class MainActivity extends AppCompatActivity {
    RecyclerView mRecyclerView;
    ItemsAdapter adapter;
    ArrayMap<String, String> arraymap;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        loadItems();

        mRecyclerView = findViewById(R.id.recycler_view);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        //设置布局管理器
        mRecyclerView.setLayoutManager(layoutManager);
        //设置为垂直布局,这也是默认的
        layoutManager.setOrientation(OrientationHelper.VERTICAL);
        //设置分隔线
        mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
        //设置增加或删除条目的动画
        mRecyclerView.setItemAnimator(new DefaultItemAnimator());
        adapter=new ItemsAdapter(this,arraymap);
        //设置Adapter
        mRecyclerView.setAdapter(adapter);
        //点击事件
        ItemClick();
    }

    private void ItemClick() {
        adapter.setOnItemClickLitener(new ItemsAdapter.OnItemClickLitener() {
            @Override
            public void onItemClick(View view, int position) {
                String num = arraymap.keyAt(position);
                String data = arraymap.valueAt(position);
                Toast.makeText(MainActivity.this, num+"——"+data, Toast.LENGTH_SHORT).show();
            }
            @Override
            public void onItemLongClick(View view, int position) {

            }
        });
    }

    private void loadItems() {
        arraymap = new ArrayMap<>();
        for (int i = 0; i < 30; i++) {
            arraymap.put(String.valueOf(i), "第" + i + "个数据");
            arraymap.put(String.valueOf(i), "第" + i + "个数据");
            String datakey = arraymap.keyAt(i);
            String datavalue = arraymap.valueAt(i);
        }

    }
}

猜你喜欢

转载自blog.csdn.net/qq_28845393/article/details/87913865