recyclerview(单条目)+点击删除

//MainActivity

public class MainActivity extends AppCompatActivity {

    List<String> list = new ArrayList<>();
    private RecyclerView recyClerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recyClerView = findViewById(R.id.main_recycler);
        for (int i = 0; i < 20; i++) {
            list.add("item " + i);
        }
        final MyAdapter myAdapter = new MyAdapter(list);

        //1.类似listview条目的形式
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        recyClerView.setLayoutManager(linearLayoutManager);
        //设置item线性摆放的方向,默认是垂直的
//        linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);

        //2.类似gridView的形式
//        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
//        gridLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
//        recyClerView.setLayoutManager(gridLayoutManager);

        //3.瀑布流的形式
//        StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
//        recyClerView.setLayoutManager(staggeredGridLayoutManager);


        myAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                list.remove(position);
//                这个方法没有动画效果,而且整个刷新
                myAdapter.notifyDataSetChanged();
//                //我们用带动画的局部刷新的方法
//                myAdapter.notifyItemRemoved(position);
            }
        });
        recyClerView.setAdapter(myAdapter);
        //设置默认的动画
        recyClerView.setItemAnimator(new DefaultItemAnimator());

        //添加分割线
        DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
        //设置分割线的颜色
        dividerItemDecoration.setDrawable(getResources().getDrawable(R.drawable.item_decoration));
        recyClerView.addItemDecoration(dividerItemDecoration);
    }
}




//Adapter

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

    List<String> list = new ArrayList<>();

    public MyAdapter(List<String> list) {
        this.list = list;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recycler, parent, false);
        final MyViewHolder myViewHolder = new MyViewHolder(itemView);
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, final int position) {
        holder.itemContentTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (onItemClickListener != null) {
                    onItemClickListener.onItemClick(v, position);
                }
            }
        });
        holder.itemContentTv.setText(list.get(position));
    }

    @Override
    public int getItemCount() {
        return list == null ? 0 : list.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {

        //viewHolder内部有一个itemView成员变量代表的就是整个item布局

        private final TextView itemContentTv;

        public MyViewHolder(final View itemView) {
            super(itemView);
            itemContentTv = itemView.findViewById(R.id.tv_item_content);

        }
    }


    //给RecyclerView设置条目点击监听
    private OnItemClickListener onItemClickListener;

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

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


猜你喜欢

转载自blog.csdn.net/aa15362415/article/details/80794365