CheckedTextView和listview配合使用定作checkbox

CustomizeCheckBoxActivity.java
package com.mw.app.view.activity;

import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.util.SparseBooleanArray;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckedTextView;
import android.widget.ListView;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.mw.app.R;

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

public class CustomizeCheckBoxActivity extends AppCompatActivity {
    private CheckedTextView checkedTextView;
    ArrayAdapter adapter = null;
    ListView listView = null;
    ArrayList<String> dataList = null;
    List<CheckedTextView> checkedList;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.customize_checkbox_layout);
        checkedList = new ArrayList<>();
        //单独一个checkBox
        checkedTextView = findViewById(R.id.customize_checkbox_item_layout_text1);
        checkedTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.i("mw","自定义当前状态是:"+(checkedTextView.isChecked()?"选中":"未选中"));
                checkedTextView.setChecked(!checkedTextView.isChecked());

            }
        });





        //模拟数据
        ArrayList<String> dataList = new ArrayList<>();
        for (int i = 0; i < 13; i++) {
            dataList.add("选择数据"+i);
        }
        //初始化ListView
        listView = (ListView) findViewById(R.id.customize_checkbox_layout_listview);
        listView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);//设置多模式
        //ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_multiple_choice); 系统样式
        adapter = new ArrayAdapter(this,R.layout.customize_checkbox_item_layout);
        //将模拟数据添加到adapter适配器中
        adapter.addAll(dataList);
        listView.setAdapter(adapter);

        //点击事件
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                CheckedTextView c = (CheckedTextView)view;
                Log.i("mw","被执行了onItemClick,当前状态是:"+c.isChecked());
                checkedList.add(c);
            }
        });

    }

    public void getAllSelectVal(View view){
        Log.i("mw","11111111");
       // Toast.makeText(getApplicationContext(),"被选中N条",Toast.LENGTH_SHORT);

        int count = 0;
        for (int i=0;i<checkedList.size();i++){
            CheckedTextView c= (CheckedTextView) checkedList.get(i);
            if(c.isChecked()){
                Log.i("mw",c.getText()+"被选中");

                ++count;
            }
           //if(c.isChecked()){ Log.i("mw","333");}
        }
        Log.i("mw","被选中"+count+"条");
    }
}

customize_checkbox_layout.xml

<?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">
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="多选实现" />

    <CheckedTextView
        android:id="@+id/customize_checkbox_item_layout_text1"
        android:layout_width="match_parent"
        android:layout_height="?android:attr/listPreferredItemHeightSmall"
        android:textAppearance="?android:attr/textAppearanceListItemSmall"
        android:gravity="center_vertical"
        android:background="@drawable/border_style"
        android:text="单独一个"
        android:checkMark="@drawable/customize_checkbox_item_layout_text_bg"
        android:paddingStart="?android:attr/listPreferredItemPaddingStart"
        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" />

    <ListView
        android:id="@+id/customize_checkbox_layout_listview"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:layout_height="wrap_content"></ListView>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="getAllSelectVal"
        android:text="确定" />
</LinearLayout>

 

border_style.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 这里是设置背景色-->
   <solid android:color="#fafafa" />
    <!-- 这里是设置为四周 也可以单独设置某个位置为圆角-->
    <corners android:topLeftRadius="5dp"
        android:topRightRadius="5dp"
        android:bottomRightRadius="5dp"
        android:bottomLeftRadius="5dp"/>
    <!-- 这里设置边框 -->
    <stroke android:width="1dp"  android:color="#e9e9e9" />
</shape>

 

customize_checkbox_item_layout_text_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/checked" android:state_selected="true" />
    <item android:drawable="@drawable/state_pressed" android:state_pressed="true" />
    <item android:drawable="@drawable/timg" android:state_checked="true" />
    <item android:drawable="@drawable/state_pressed" />
</selector>

 

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/customize_checkbox_item_layout_text"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeightSmall"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:checkMark="@drawable/customize_checkbox_item_layout_text_bg"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" />

图标

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值