android listview 中的checkbox单选,ListView嵌套CheckBox实现单选

本文展示了Android布局文件的结构,包括`match_parent`和`wrap_content`属性的使用,以及`TextView`和`CheckBox`的设置。同时,提供了一个自定义适配器`AddressAdapter`的代码实例,该适配器用于显示地址列表,包含选择框、收件人、地址和城市信息。适配器中实现了点击监听和选中状态的管理。
摘要由CSDN通过智能技术生成

9181b1778c66e04590fb6ba12927c169.png

布局文件:

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/address_select"

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:layout_centerVertical="true"

android:focusable="false"

android:focusableInTouchMode="false"/>

android:id="@+id/address_name"

android:layout_toRightOf="@id/address_select"

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:textSize="@dimen/hao_15dp"

android:text="DASHDK"

android:padding="5dp"/>

android:id="@+id/address_provinceAndCity"

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:textSize="@dimen/hao_13dp"

android:layout_alignParentRight="true"

android:textColor="@color/deep_grey"

android:padding="5dp"

android:text="上海市 虹口区"/>

android:id="@+id/address"

android:layout_toRightOf="@id/address_select"

android:layout_height="wrap_content"

android:layout_width="wrap_content"

android:textColor="@color/deep_grey"

android:textSize="@dimen/hao_13dp"

android:layout_below="@id/address_name"

android:text="dasdhaidhaid"

android:padding="5dp"/>

代码:

package com.gd.handphoto.adpter;

import java.util.List;

import android.app.Activity;

import android.util.SparseBooleanArray;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.CheckBox;

import android.widget.CompoundButton;

import android.widget.CompoundButton.OnCheckedChangeListener;

import android.widget.TextView;

import com.gd.handphoto.main.R;

import com.gd.handphoto.model.AddressModel;

public class AddressAdapter extends MyBaseAdapter {

private List list;

private LayoutInflater inflater;

private SparseBooleanArray selectArray;

public AddressAdapter(Activity context) {

inflater = LayoutInflater.from(context);

selectArray = new SparseBooleanArray();

}

public void setData(List list) {

this.list = list;

}

@Override

public int getCount() {

return list.size();

}

@Override

public Object getItem(int position) {

return list.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

public SparseBooleanArray getSelectArray() {

return selectArray;

}

@Override

public View getView(final int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;

if (convertView == null) {

holder = new ViewHolder();

convertView = inflater.inflate(R.layout.address_list_item, parent ,false);

holder.address = (TextView) convertView.findViewById(R.id.address);

holder.address_name = (TextView) convertView.findViewById(R.id.address_name);

holder.cityAndProvince = (TextView) convertView.findViewById(R.id.address_provinceAndCity);

holder.checkBox = (CheckBox) convertView.findViewById(R.id.address_select);

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

holder.address_name.setText(list.get(position).getAddressee());

holder.address.setText(list.get(position).getAddress());

holder.cityAndProvince.setText(list.get(position).getProvince() + " " + list.get(position).getCity());

holder.checkBox.setTag(position);

holder.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

int tag = Integer.parseInt(buttonView.getTag().toString());

if (isChecked) {

for (int i = 0; i 

if (tag == i) {

selectArray.put(i, true);

}else {

selectArray.put(i, false);

}

}

} else {

selectArray.put(tag, false);

}

notifyDataSetChanged();

}

});

holder.checkBox.setChecked(selectArray.get(position));

return convertView;

}

static class ViewHolder {

TextView address, address_name, cityAndProvince;

CheckBox checkBox;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值