RecyclerView-点击条目删除

MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private Button mButton1;
    private Button mButton2;
    private Button mButton3;
    private Button mButton4;
    private Button mButton5;
    private RecyclerView mRecyclerView;
    private ArrayList<String> mList;
    private LinearLayoutManager mLinearLayoutManager;
    private RvAdapter mAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViews();

        mList = new ArrayList<>();
        for (int i=0;i<20;i++){
            mList.add(i+"item");
        }

        mAdapter = new RvAdapter(mList, this);
        mRecyclerView.setAdapter(mAdapter);

        //设置分割线
        mRecyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
        //设置默认布局
        mLinearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
        mRecyclerView.setLayoutManager(mLinearLayoutManager);

        mAdapter.setOnItemClickListener(new RvAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(int position) {
                mAdapter.remove(position);
            }

            @Override
            public void onItemLongClick(int position) {

                mAdapter.remove(position);
            }
        });

    }

    private void findViews() {

        mRecyclerView = findViewById(R.id.rv);

        mButton1= findViewById(R.id.b1);
        mButton2= findViewById(R.id.b2);
        mButton3= findViewById(R.id.b3);
        mButton4= findViewById(R.id.b4);
        mButton5= findViewById(R.id.b5);

        mButton1.setOnClickListener(this);
        mButton2.setOnClickListener(this);
        mButton3.setOnClickListener(this);
        mButton4.setOnClickListener(this);
        mButton5.setOnClickListener(this);


    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.b1:

                mAdapter.addData(3);
                mRecyclerView.scrollToPosition(0);
                break;
            case R.id.b2:

                mAdapter.remove(mList.size()-1);
                break;
            case R.id.b3:

                mLinearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
                mRecyclerView.setLayoutManager(mLinearLayoutManager);
                break;
            case R.id.b4:

                mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));
                //mRecyclerView.addItemDecoration(new android.support.v7.widget.DividerItemDecoration(this, DividerItemDecoration.HORIZONTAL));

                break;
            case R.id.b5:

                mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
                break;
        }
    }
}

activity_main.xml

<android.support.constraint.ConstraintLayout 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"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <Button
                android:id="@+id/b1"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="添加"/>
            <Button
                android:id="@+id/b2"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="删除"/>
            <Button
                android:id="@+id/b3"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="List"/>
            <Button
                android:id="@+id/b4"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="Grid"/>
            <Button
                android:id="@+id/b5"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="flow"/>
        </LinearLayout>
        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    </LinearLayout>

</android.support.constraint.ConstraintLayout>

RvAdapter.java

public class RvAdapter extends RecyclerView.Adapter<RvAdapter.ViewHolder>{

    private List<String> lists;
    private Context mContext;

    public RvAdapter(List<String> lists, Context context) {
        this.lists = lists;
        mContext = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(mContext, R.layout.item, null);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    public void addData(int position) {
        lists.add(position,"ff");
        notifyItemInserted(position);
    }

    public void remove(int i) {
        lists.remove(i);
        notifyItemRemoved(i);
        notifyDataSetChanged();

    }

    public interface OnItemClickListener{   //自定义接口回调设置点击事件
        void onItemClick(int position);
        void onItemLongClick(int position);
    }

    private OnItemClickListener mOnItemClickListener;

    public void setOnItemClickListener(OnItemClickListener onItemClickListener){
        mOnItemClickListener=onItemClickListener;
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        holder.mTextView.setText(lists.get(position));

             holder.itemView.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View view) {

                     int ps = holder.getLayoutPosition();
                     mOnItemClickListener.onItemClick(ps);
                 }
             });

             holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                 @Override
                 public boolean onLongClick(View view) {

                     int ps=holder.getLayoutPosition();
                     mOnItemClickListener.onItemLongClick(ps);
                     return false;
                 }
             });

    }


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

    public static class ViewHolder extends RecyclerView.ViewHolder{
        public final TextView mTextView;

        public ViewHolder(View itemView) {
            super(itemView);
            mTextView = (TextView) itemView.findViewById(R.id.tv);
        }
    }
}

build.gradle

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

猜你喜欢

转载自blog.csdn.net/FanRQ_/article/details/84071848