RecyclerView适配器类

  1. 先导入依赖
    implementation ‘com.android.support:recyclerview-v7:28.0.0’
    api(‘com.jcodecraeer:xrecyclerview:1.5.9’) {
    exclude group: ‘com.android.support’
    }

此适配器方法可以更好的实现删除添加数据的效果

适配器代码如下:

package com.example.day01;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.text.PrecomputedText;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyHolder> {

    Context context;
    ArrayList<String> datas;
    MyOnClick myOnClick;

    public MyAdapter(Context context, ArrayList<String> datas) {
        this.context = context;
        this.datas = datas;
    }

    /**
     * 设置接口
     * @param myOnClick
     */
    public void setMyOnClick(MyOnClick myOnClick){
        this.myOnClick = myOnClick;
    }

    @NonNull
    @Override
    public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        return new MyHolder(LayoutInflater.from(context).inflate(R.layout.item_me,viewGroup,false));
    }

    @Override
    public void onBindViewHolder(@NonNull final MyHolder myHolder, final int i) {
        myHolder.tv.setText(datas.get(i));//给控件设置数据源
        //(数据类型)(最小值+Math.random()*(最大值-最小值+1))随机数
        int rundom = (int)(100+Math.random()*(800-400+1));
        Log.e("rundom###",""+rundom);
        //设置高度
        ViewGroup.LayoutParams params = myHolder.tv.getLayoutParams();
        params.height = rundom;
        myHolder.tv.setLayoutParams(params);


        myHolder.tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myOnClick.myItemClick(i);
            }
        });
        myHolder.tv.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                myOnClick.myLongClick(i);
                return true;
            }
        });
    }

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

    public class MyHolder extends RecyclerView.ViewHolder{
        private TextView tv;
        public MyHolder(@NonNull View itemView) {
            super(itemView);
            tv = itemView.findViewById(R.id.tv);
        }
    }
}

主类代码:

package com.example.day01;

import android.graphics.drawable.Drawable;
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.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.widget.LinearLayout;

import java.util.ArrayList;

public class day01 extends AppCompatActivity {
    RecyclerView recyc;
    ArrayList<String> datas;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_day01);
        //找控件
        recyc = findViewById(R.id.recyc);
        //ListView布局方式
//        LinearLayoutManager manager = new LinearLayoutManager(this);
//        manager.setOrientation(LinearLayout.VERTICAL);//设置布局方向
        //Grild的样式
//        GridLayoutManager manager = new GridLayoutManager(this,1,GridLayoutManager.HORIZONTAL,false);

        StaggeredGridLayoutManager manager1 = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
        recyc.setLayoutManager(manager1);

        //第一个参数上下文  第二个参数显示方向
        DividerItemDecoration decoration = new DividerItemDecoration(this,DividerItemDecoration.VERTICAL);
//        recyc.addItemDecoration(decoration);//设置给控件
        //设置Item的边框颜色
        Drawable drawable = getResources().getDrawable(R.drawable.my_tem);
        decoration.setDrawable(drawable);
        recyc.addItemDecoration(decoration);

        DefaultItemAnimator animator = new DefaultItemAnimator();
        animator.setRemoveDuration(200);
        animator.setAddDuration(200);
        recyc.setItemAnimator(animator);//设置动画
        initdata();
        final MyAdapter adapter = new MyAdapter(this,datas);
        recyc.setAdapter(adapter);
        adapter.setMyOnClick(new MyOnClick() {
            @Override
            public void myItemClick(int i) {
                datas.remove(i);//删除数据
                adapter.notifyItemRemoved(i);
                //删除后更新下标
                adapter.notifyItemRangeChanged(0,datas.size());
            }

            @Override
            public void myLongClick(int i) {
                //长按加数据
                ArrayList<String> newstr = new ArrayList<>();
                newstr.add("zzz");
                newstr.add("aaa");
                newstr.add("sss");
                datas.addAll(newstr);
                adapter.notifyItemInserted(0);
                adapter.notifyDataSetChanged();//更新适配器
            }
        });
    }
    //数据初始化
    public void initdata(){
        datas = new ArrayList<>();
        for(int i = 97;i <= 122;i++){
            char a = (char)i;
            datas.add(a+"");
        }

    }
}

猜你喜欢

转载自blog.csdn.net/qq_44946212/article/details/91348078