recycleview多选单选

mainactivity:

package com.choiceimageview;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

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

    /**
     * recyclerview+imageView单选
     * @param view
     */
    public void tvSingle(View view){
        startActivity(new Intent(MainActivity.this,SingleActivity.class));
    }

    /**
     * recyclerview+imageView多选、全选、取消全选
     * @param view
     */
    public void tvMore(View view){
        startActivity(new Intent(MainActivity.this,MoreActivity.class));
    }
}

多选activity

package com.choiceimageview;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

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

/**
 *多选、全选、取消全选
 */

public class MoreActivity extends AppCompatActivity{
    private RecyclerView recyclerview;
    private List<Datainfo> datas = new ArrayList<>();
    private MoreAdpter adapter;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_more);
        getData();
        recyclerview = (RecyclerView) findViewById(R.id.recyclerview);
        //设置布局管理器
        recyclerview.setLayoutManager(new LinearLayoutManager(this));
        //设置adapter
        adapter =new MoreAdpter(this,datas);
        recyclerview.setAdapter(adapter);
    }

    /**
     * 全选
     * @param view
     */
    public void btnAll(View view){
        setData(true);
    }

    /**
     * 取消
     * @param view
     */
    public void btnCanl(View view){
        setData(false);
    }
    /**
     * 根据全选或取消设置数据
     * @param isAll  是否全选
     */
    private void setData(boolean isAll){
        for (Datainfo data : datas) {
            if(isAll){
                data.isCheck=true;
            }else{
                data.isCheck=false;
            }
        }
        //刷新数据
        adapter.nodfiyData(datas);
    }
    class MoreAdpter extends RecyclerView.Adapter<MoreAdpter.MoreHolder>{
        private List<Datainfo> mData;
        private Context mContext;
        private LayoutInflater mInflater;
        public MoreAdpter(Context context, List<Datainfo> list) {
            this.mContext = context;
            mInflater = LayoutInflater.from(mContext);
            this.mData = new ArrayList<>();
            if (mData != null) {
                this.mData.addAll(list);
            }
        }

        /**
         * 刷新数据
         *
         * @param list
         */
        public void nodfiyData(List<Datainfo> list) {
            if (list != null) {
                this.mData.clear();
                this.mData.addAll(list);
            }
            notifyDataSetChanged();
        }

        @Override
        public MoreHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = mInflater.inflate(R.layout.single_item, parent, false);
            MoreHolder holder = new MoreHolder(view);
            return holder;
        }

        @Override
        public void onBindViewHolder(MoreHolder holder, int position) {
            final Datainfo datainfo = mData.get(position);
            holder.tvItem.setText(datainfo.itemContent);
            final boolean isCheck = datainfo.isCheck;
            if (isCheck) {
                //被选
                holder.ivCheck.setImageResource(R.drawable.image_check);
            } else {
                //未被选
                holder.ivCheck.setImageResource(R.drawable.image_uncheck);
            }
            holder.llLayout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String newId = datainfo.itemId;
                    for (Datainfo datainfo1 : datas) {
                        String oldId = datainfo1.itemId;
                        if (newId.equals(oldId)) {
                            boolean isCheck1 = datainfo1.isCheck;
                            if(isCheck1){
                                datainfo1.isCheck=false;
                            }else{
                                datainfo1.isCheck=true;
                            }
                            break;
                        }
                    }
                    //刷新数据
                    nodfiyData(datas);
                }
            });
        }

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

        class MoreHolder extends RecyclerView.ViewHolder{
            ImageView ivCheck;
            TextView tvItem;
            LinearLayout llLayout;
            public MoreHolder(View itemView) {
                super(itemView);
                ivCheck = (ImageView) itemView.findViewById(R.id.iv_check);
                tvItem = (TextView) itemView.findViewById(R.id.tv_item);
                llLayout = (LinearLayout) itemView.findViewById(R.id.ll_layout);
            }
        }
    }
    private void getData() {
        for (int i = 0; i < 40; i++) {
            Datainfo info = new Datainfo();
            info.isCheck = false;
            info.itemContent = "item" + i;
            info.itemId = "" + i;
            datas.add(info);
        }
    }
}

单选activity

package com.choiceimageview;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

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

/**
 * RecyclerView+imageview实现列表单选
 */

public class SingleActivity extends AppCompatActivity {
    private RecyclerView recyclerview;
    private List<Datainfo> datas = new ArrayList<>();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_single);
        getData();
        recyclerview = (RecyclerView) findViewById(R.id.recyclerview);
        //设置布局管理器
        recyclerview.setLayoutManager(new LinearLayoutManager(this));
        SingleAdater adapter = new SingleAdater(this, datas);
        //设置适配器
        recyclerview.setAdapter(adapter);
    }

    class SingleAdater extends RecyclerView.Adapter<SingleAdater.SingleHolder> {
        private List<Datainfo> mData;
        private Context mContext;
        private LayoutInflater mInflater;

        public SingleAdater(Context context, List<Datainfo> list) {
            this.mContext = context;
            mInflater = LayoutInflater.from(mContext);
            this.mData = new ArrayList<>();
            if (mData != null) {
                this.mData.addAll(list);
            }
        }

        /**
         * 刷新数据
         *
         * @param list
         */
        public void nodfiyData(List<Datainfo> list) {
            if (list != null) {
                this.mData.clear();
                this.mData.addAll(list);
            }
            notifyDataSetChanged();
        }

        @Override
        public SingleHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = mInflater.inflate(R.layout.single_item, parent, false);
            SingleHolder holder = new SingleHolder(view);
            return holder;
        }

        @Override
        public void onBindViewHolder(final SingleHolder holder, int position) {
            final Datainfo datainfo = mData.get(position);
            holder.tvItem.setText(datainfo.itemContent);
            final boolean isCheck = datainfo.isCheck;
            if (isCheck) {
                //被选
                holder.ivCheck.setImageResource(R.drawable.image_check);
            } else {
                //未被选
                holder.ivCheck.setImageResource(R.drawable.image_uncheck);
            }
            holder.llLayout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String newId = datainfo.itemId;
                    for (Datainfo datainfo1 : datas) {
                        String oldId = datainfo1.itemId;
                        if (newId.equals(oldId)) {
                            datainfo1.isCheck = true;
                        }else{
                            datainfo1.isCheck = false;
                        }
                    }
                    //刷新数据
                    nodfiyData(datas);
                }
            });
        }

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

        class SingleHolder extends RecyclerView.ViewHolder {
            ImageView ivCheck;
            TextView tvItem;
            LinearLayout llLayout;

            public SingleHolder(View itemView) {
                super(itemView);
                ivCheck = (ImageView) itemView.findViewById(R.id.iv_check);
                tvItem = (TextView) itemView.findViewById(R.id.tv_item);
                llLayout = (LinearLayout) itemView.findViewById(R.id.ll_layout);
            }
        }
    }

    private void getData() {
        for (int i = 0; i < 40; i++) {
            Datainfo info = new Datainfo();
            info.isCheck = false;
            info.itemContent = "item" + i;
            info.itemId = "" + i;
            datas.add(info);
        }
    }
}
package com.choiceimageview;

public class Datainfo {
    public String itemContent;
    public boolean isCheck;
    public String itemId;
}

布局:主布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.choiceimageview.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@color/colorAccent"
        android:text="recyclerview+imageView单选"
        android:gravity="center"
        android:onClick="tvSingle"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@color/colorAccent"
        android:text="recyclerview+imageView多选、全选、取消全选"
        android:gravity="center"
        android:onClick="tvMore"
        android:layout_marginTop="20dp"/>
</LinearLayout>

多选布局:

<?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">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:onClick="btnAll"
            android:layout_width="70dp"
            android:layout_height="40dp"
            android:text="全选"/>
        <Button
            android:onClick="btnCanl"
            android:layout_width="70dp"
            android:layout_height="40dp"
            android:text="取消"/>
    </LinearLayout>
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

单选布局:

<?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">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

item:

<?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="wrap_content">
    <LinearLayout
        android:id="@+id/ll_layout"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">
        <ImageView
            android:id="@+id/iv_check"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@drawable/image_uncheck"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="15dp"/>
        <TextView
            android:id="@+id/tv_item"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/black"
            android:textSize="13sp"
            android:text="1111"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="20dp"/>

    </LinearLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:background="@android:color/black"/>

</LinearLayout>
发布了95 篇原创文章 · 获赞 17 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_30299243/article/details/100081075