• ListView加checkBox可以实现全选等功能


    1.效果图

    2.LIteView_item布局

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dip"
        android:layout_weight="1.0"
        android:layout_marginLeft="10dp"
    
        android:orientation="horizontal"
        android:descendantFocusability="blocksDescendants"
        android:background="#AAAAAA"
        >
    
        <CheckBox android:id="@+id/isCheakBox" android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_alignParentRight="true" />
       
        <ImageView android:id="@+id/dailyPic"
            android:contentDescription="dailyPic"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="3.0dip"
            android:src="@mipmap/txt"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"/>
      
        <TextView
            android:id="@+id/dailyName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/dailyPic"
            android:text=""
            android:layout_centerVertical="true"
            android:textColor="#000000"
            android:textSize="12.0sp" />
    
    </RelativeLayout>
    
    
     
     

    3.主布局: 只要有checkbox,listView 也行

    <?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:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:orientation="vertical"
        android:background="@color/bai"
        tools:context="myapplication.com.myblue.activity.Rizhi_Activity">
        <LinearLayout
            android:layout_height="45dp"
            android:layout_width="match_parent"
            android:background="@color/rizhi"
            android:id="@+id/layout1"
            android:visibility="gone"
            android:gravity="center_horizontal|center_vertical"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/textView_quxiao"
                android:layout_height="match_parent"
                android:layout_width="wrap_content"
                android:text="取消"
                android:layout_marginLeft="10dp"
                android:background="@color/rizhi"
                android:gravity="center_horizontal|center_vertical"
                android:textColor="@color/bai"/>
            <TextView
                android:id="@+id/textView_quanxuan"
                android:layout_height="match_parent"
                android:layout_width="0dp"
                android:gravity="center_horizontal|center_vertical"
                android:layout_weight="1"
                android:text="已选择1项"
                android:textColor="@color/bai"/>
            <CheckBox android:id="@+id/all_check_btn"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_alignParentLeft="true"/>
        </LinearLayout>
        <LinearLayout
            android:id="@+id/layout2"
            android:layout_height="@dimen/titlebar"
            android:layout_width="match_parent"
            android:background="@color/theme"
            android:orientation="horizontal">
            <ImageView
                android:id="@+id/imageView1"
                android:layout_height="match_parent"
                android:layout_width="@dimen/zhuyemian"
                android:layout_gravity="center_vertical"
                android:src="@mipmap/search_back"/>
            <TextView
                android:id="@+id/textView1"
                android:layout_height="@dimen/titlebar"
                android:layout_width="0dp"
                android:text="@string/rizhi_textview1"
                android:gravity="center_horizontal|center_vertical"
                android:textSize="@dimen/title_size"
                android:layout_weight="1"/>
            <ImageView
                android:layout_height="match_parent"
                android:layout_width="@dimen/zhuyemian"
                android:src="@mipmap/search"/>
        </LinearLayout>
    
            <ListView
                android:layout_marginTop="3dp"
                android:id="@+id/listView"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:layout_width="match_parent"/>
    
        <LinearLayout
            android:layout_height="45dp"
            android:layout_width="match_parent"
            android:id="@+id/layout3"
            android:visibility="gone"
            android:background="@color/rizhi"
            android:gravity="center_horizontal|center_vertical"
            android:orientation="horizontal">
    
            <TextView
                android:layout_height="match_parent"
                android:layout_width="0dp"
                android:gravity="center_horizontal|center_vertical"
                android:layout_weight="1"
                android:text="删除"
                android:textColor="@color/bai"/>
            <TextView
                android:id="@+id/textView_loadup"
                android:layout_height="match_parent"
                android:layout_width="0dp"
                android:gravity="center_horizontal|center_vertical"
                android:layout_weight="1"
                android:text="上传"
                android:textColor="@color/bai"/>
    
        </LinearLayout>
    </LinearLayout>

    4.adapter

     class DraftDailyAdapter extends BaseAdapter {
    
            public List<Item> list;
            private Context context;
            LayoutInflater inflater;
    
            public DraftDailyAdapter(Context context, List<Item> list) {
                super();
                this.list = list;
                this.context = context;
                inflater = LayoutInflater.from(this.context);
            }
            @Override
            public int getCount() {
                return list == null ? 0 : list.size();
            }
            @Override
            public Object getItem(int location) {
                return list.get(location);
            }
            @Override
            public long getItemId(int position) {
                return position;
            }
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                ViewHolder holder = null;
                Item item = list.get(position);
                //Item的位置
                final int listPosition = position;
                //这个记录item的id用于操作isCheckedMap来更新CheckBox的状态
                final int id = item.id;
                if(convertView == null){
                    holder = new ViewHolder();
                    convertView = inflater.inflate(R.layout.layout_listviewitem, null);
                    holder.tvName = (TextView)convertView.findViewById(R.id.dailyName);
                    holder.dailyPic= (ImageView) convertView.findViewById(R.id.dailyPic);
                    //  holder.deleteButton = (ImageButton)convertView.findViewById(R.id.deleteAttachment);
                    holder.cBox = (CheckBox)convertView.findViewById(R.id.isCheakBox);
                    convertView.setTag(holder);
                }else{
                    holder = (ViewHolder) convertView.getTag();
                }
                // Log.d(TAG, "id="+id);
                holder.cBox.setChecked(isCheckedMap.get(id));
                holder.tvName.setText(item.name);
                if(item.name.contains("txt")){
                    holder.dailyPic.setImageResource(R.mipmap.txt);
                }else{
                    holder.dailyPic.setImageResource(R.mipmap.photo);
                }
    //            holder.deleteButton.setOnClickListener(new View.OnClickListener() {
    //                @Override
    //                public void onClick(View paramView) {
    //                    //Log.d(TAG, "deletePosition="+listPosition+"");
    //                    //删除list中的数据
    //                    list.remove(listPosition);
    //                    //删除Map中对应选中状态数据
    //                    isCheckedMap.remove(id);
    //                    //通知列表数据修改
    //                    adapter.notifyDataSetChanged();
    //                }
    //            });
                holder.cBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
                    @Override
                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                      layout1.setVisibility(View.VISIBLE);
                      layout2.setVisibility(View.GONE);
                      layout3.setVisibility(View.VISIBLE);
                        if(isChecked){
                            isCheckedMap.put(id,true);
                        }else{
                            isCheckedMap.put(id,false);
                        }
                    }
                });
                return convertView;
            }
            public final class ViewHolder {
                public TextView tvName;
                public ImageButton deleteButton;
                public CheckBox cBox;
                ImageView dailyPic;
            }
        }

    5.item数据类

    class Item {
            private Integer id;
            private String name;
            String address;
        }

    6.实现

    package myapplication.com.myblue.activity;
    
    import android.content.Context;
    import android.graphics.Color;
    import android.os.Environment;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.support.v7.widget.SearchView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.CheckBox;
    import android.widget.CompoundButton;
    import android.widget.ImageButton;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.ListView;
    import android.widget.TextView;
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    import myapplication.com.myblue.R;
    import myapplication.com.myblue.adapter.ListViewAdapter;
    import myapplication.com.myblue.entity.WenjianBean;
    import myapplication.com.myblue.utils.SDcardHelper;
    
    public class Rizhi_Activity extends AppCompatActivity  implements SearchView.OnQueryTextListener{
        SearchView rizhi_searchview;
        ImageView imageView1;
        LinearLayout layout1,layout2,layout3;
        TextView textView_quanxuan,textView_quxiao,textView_loadup;
    
        /*
        *
        * ***/
        private List<Item> itemList;
        private DraftDailyAdapter adapter;
        private Map<Integer, Boolean> isCheckedMap;
        private CheckBox allCheckBox;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_rizhi);
            initView();
        }
        public void  initView(){
    
    // 这里的data数据是读取的文件夹path和name,根据自己需要修改Item数据
    File file1=new File(Environment.getExternalStorageDirectory()+File.separator+"AA"); File[] files = file1.listFiles(); List<WenjianBean>data=SDcardHelper.getFileName(files); allCheckBox = (CheckBox)findViewById(R.id.all_check_btn); itemList = new ArrayList<Item>(); ListView list= (ListView) findViewById(R.id.listView); isCheckedMap = new HashMap<Integer, Boolean>(); //初始化数据 for(int i=0;i<data.size();i++){ Item item = new Item(); item.id=i; item.name = data.get(i).getName(); item.address=data.get(i).getAddress(); itemList.add(item); isCheckedMap.put(i,false); } adapter = new DraftDailyAdapter(this,itemList); list.setAdapter(adapter); textView_loadup= (TextView) findViewById(R.id.textView_loadup); layout1= (LinearLayout) findViewById(R.id.layout1); layout2= (LinearLayout) findViewById(R.id.layout2); layout3= (LinearLayout) findViewById(R.id.layout3); textView_quanxuan= (TextView) findViewById(R.id.textView_quanxuan); textView_quxiao= (TextView) findViewById(R.id.textView_quxiao); // final ListViewAdapter adapter=new ListViewAdapter(getApplicationContext(),data,layout1,layout2,layout3); // listView= (ListView) findViewById(R.id.listView); // listView.setAdapter(adapter); imageView1= (ImageView) findViewById(R.id.imageView1); imageView1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); textView_quxiao.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { layout1.setVisibility(View.GONE); layout2.setVisibility(View.VISIBLE); layout3.setVisibility(View.GONE); } }); textView_quanxuan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); /**** * 全选功能 * */ allCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Set<Integer> set = isCheckedMap.keySet(); Iterator<Integer> iterator = set.iterator(); if(isChecked){ while(iterator.hasNext()){ Integer keyId = iterator.next(); isCheckedMap.put(keyId,true); } }else{ while(iterator.hasNext()){ Integer keyId = iterator.next(); isCheckedMap.put(keyId,false); } } adapter.notifyDataSetChanged(); } }); textView_loadup.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { for(Map.Entry<Integer, Boolean> entry:isCheckedMap.entrySet()){ System.out.println(entry.getKey()+"--->"+entry.getValue()); if(entry.getValue().toString().contains("true")){
                    // 读取选中的数据 System.out.println(
    "**"+itemList.get(entry.getKey()).name+itemList.get(entry.getKey()).address);
                   } } } }); } @Override
    public boolean onQueryTextSubmit(String query) { return false; } @Override public boolean onQueryTextChange(String newText) { return false; } /*** * adapter * **/ class DraftDailyAdapter extends BaseAdapter { public List<Item> list; private Context context; LayoutInflater inflater; public DraftDailyAdapter(Context context, List<Item> list) { super(); this.list = list; this.context = context; inflater = LayoutInflater.from(this.context); } @Override public int getCount() { return list == null ? 0 : list.size(); } @Override public Object getItem(int location) { return list.get(location); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; Item item = list.get(position); //Item的位置 final int listPosition = position; //这个记录item的id用于操作isCheckedMap来更新CheckBox的状态 final int id = item.id; if(convertView == null){ holder = new ViewHolder(); convertView = inflater.inflate(R.layout.layout_listviewitem, null); holder.tvName = (TextView)convertView.findViewById(R.id.dailyName); holder.dailyPic= (ImageView) convertView.findViewById(R.id.dailyPic); // holder.deleteButton = (ImageButton)convertView.findViewById(R.id.deleteAttachment); holder.cBox = (CheckBox)convertView.findViewById(R.id.isCheakBox); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } // Log.d(TAG, "id="+id); holder.cBox.setChecked(isCheckedMap.get(id)); holder.tvName.setText(item.name); if(item.name.contains("txt")){ holder.dailyPic.setImageResource(R.mipmap.txt); }else{ holder.dailyPic.setImageResource(R.mipmap.photo); } // holder.deleteButton.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View paramView) { // //Log.d(TAG, "deletePosition="+listPosition+""); // //删除list中的数据 // list.remove(listPosition); // //删除Map中对应选中状态数据 // isCheckedMap.remove(id); // //通知列表数据修改 // adapter.notifyDataSetChanged(); // } // }); holder.cBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){ @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { layout1.setVisibility(View.VISIBLE); layout2.setVisibility(View.GONE); layout3.setVisibility(View.VISIBLE); if(isChecked){ isCheckedMap.put(id,true); }else{ isCheckedMap.put(id,false); } } }); return convertView; } public final class ViewHolder { public TextView tvName; public ImageButton deleteButton; public CheckBox cBox; ImageView dailyPic; } }
    // 填充数据类
    class Item { private Integer id; private String name; String address; } }
    今天多一点积累,明天少一分烦恼
  • 相关阅读:
    shentou mianshiti
    PHP
    XSS分类&危害&防御
    SQL注入原理&分类&危害&防御
    绕WAF&安全狗新姿势
    IO 模型
    SPC 判异
    [VBA]关于查找方法(Find方法)的应用(一)
    python学习第二十三天 并发编程(线程,进程,协程)
    excel 空单元格在图表中显示的方式 空 0 或者线
  • 原文地址:https://www.cnblogs.com/galibujianbusana/p/6131289.html
Copyright © 2020-2023  润新知