RecyclerView实现条目展示 增加删除 3种管理器

                                                         RecyclerView实现条目展示 增加删除  3种管理器

一:布局管理器有三种:
  1. LinearLayoutManager 现行管理器,支持横向、纵向。
  2. GridLayoutManager 网格布局管理器
  3. StaggeredGridLayoutManager 瀑布就式布局管理器

二:ItemDecoration  下划线效果

在使用RecyclerView 的时候有三种东西是可以自己定义的   响应事件    分割线  动画效果

 mRecyclerView = findView(R.id.id_recyclerview);
//设置布局管理器  layout可以设置方向
//mRecyclerView.setLayoutManager(layout);
mRecyclerView.setLayoutManager(new GridLayoutManager(this,4));
//设置adapter
mRecyclerView.setAdapter(adapter)
//设置Item增加、移除动画
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
//添加分割线
mRecyclerView.addItemDecoration(new DividerItemDecoration( getActivity(), DividerItemDecoration.HORIZONTAL_LIST));

三:开始代码逻辑:
    1:添加依赖
    
compile 'com.android.support:recyclerview-v7:26.0.+'

     2:布局
 
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <Button
        android:id="@+id/btn1"
        android:text="添加"
        android:layout_weight="1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/btn2"
        android:text="删除"
        android:layout_weight="1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/btn3"
        android:text="list"
        android:layout_weight="1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/btn4"
        android:text="grid"
        android:layout_weight="1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/btn5"
        android:text="flow"
        android:layout_weight="1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>

3. MainActivity类
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
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.view.View;
import android.widget.Button;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    RecyclerView recyclerView;
    private Button btn1;
    private Button btn2;
    private Button btn3;
    private Button btn4;
    private Button btn5;
    private RecyclerView recyclerview;
    List<String>list;
    MyAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
       initView();
        //初始化数据
       initData();
        //创建Adapter对象
       adapter = new MyAdapter(MainActivity.this,list);
        //绑定
       recyclerview.setAdapter(adapter);
    }
   //初始化数据 添加假数据
    private void initData() {
        list = new ArrayList<String>();
        for (int i =0; i < 50; i++){
        list.add("我是条目"+i);
        }
    }
    //初始化控件
    private void initView() {
        btn1 = (Button) findViewById(R.id.btn1);
        btn2 = (Button) findViewById(R.id.btn2);
        btn3 = (Button) findViewById(R.id.btn3);
        btn4 = (Button) findViewById(R.id.btn4);
        btn5 = (Button) findViewById(R.id.btn5);
        recyclerview = (RecyclerView) findViewById(R.id.recyclerview);
        //监听事件
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
        btn3.setOnClickListener(this);
        btn4.setOnClickListener(this);
        btn5.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn1:
        adapter.addData(1);
                break;
            case R.id.btn2:
        adapter.dele(1);
                break;
            case R.id.btn3:
                //现行管理器,支持横向、纵向
               LinearLayoutManager maager = new LinearLayoutManager(this);
                recyclerview.setLayoutManager(maager);
                break;
            case R.id.btn4:

               //网格布局管理器
GridLayoutManager manager2 = new GridLayoutManager(this,4); recyclerview.setLayoutManager(manager2); break; case R.id.btn5: //瀑布就式布局管理器
StaggeredGridLayoutManager manager1 = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL); recyclerview.setLayoutManager(manager1); break; } }}
4.适配器布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/img"
        android:src="@mipmap/ic_launcher"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/tv"
        android:text="我是条目"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

5.适配器
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;


public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
    Context context;
    List<String>list= new ArrayList<>();
     构造方法
    public MyAdapter(Context context, List<String> list) {
        this.context = context;
        this.list = list;
    }
   添加数据
 public void addData(int position){
        list.add(position,"1");
       notifyItemInserted(position);
   }
   删除数据
 public void dele(int position){
        list.remove(position);
        notifyItemRemoved(position);
    }
    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(context,R.layout.item,null);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
    holder.img.setImageResource(R.mipmap.ic_launcher);
    holder.tv.setText(list.get(position));
    }

    @Override
    public int getItemCount() {
        return list.size();
    }
 ViewHolder的类,用于缓存控件
    public class ViewHolder extends RecyclerView.ViewHolder {
            ImageView img;
            TextView tv;

        public ViewHolder(View itemView) {
            super(itemView);
            img = itemView.findViewById(R.id.img);
            tv = itemView.findViewById(R.id.tv);
        }
    }
}
下图是实现效果图: 
RecyclerView实现条目展示 增加删除 3种管理器