Android 单选适配器(默认选中从数据库中查出为True的选项)

 
网上看了好多单选的案例,没有看到说从数据库查值的为单选的,自己最近又有这个需求,索性就写一个吧
,虽然说现在都流行H5的了,但原生总会有些情况下需要做的吧
 
import android.app.Activity;
import android.util.Log;
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.TextView;

import com.cntaipu.R;

import java.util.ArrayList;

/**
 * Created by 1140 on 2018/2/10.
 */

public class FKAdapter extends BaseAdapter {

    private Activity activity;//上下文
    private ArrayList<String> list;
    private LayoutInflater inflater = null;//布局导入
    private int temp = -1;

    public FKAdapter(Activity context, ArrayList<String> list) {
        this.activity = context;
        this.list = list;
        inflater = LayoutInflater.from(context);
    }

    @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;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if (convertView == null) {//当的第一次加载listView时候,convertView 为空
            convertView = inflater.inflate(R.layout.sf_log_kinds_list, null);
            holder = new ViewHolder();
            holder.fk = (TextView) convertView.findViewById(R.id.tv_fishLogKinds);//信息
            holder.cb = (CheckBox) convertView.findViewById(R.id.cb_choose_kind);//选择
            convertView.setTag(holder);
        } else {//取出holder
            holder = (ViewHolder) convertView.getTag();
        }
//      设置list的textView显示

        holder.fk.setText(list.get(position).split(":")[0]);
//        根据isSelected 来设置checkbox的选中中状况
        holder.cb.setId(position);//对checkbox 的id 进行重新设置当前的position
//   根据数据库查出状态为true
        if (list.get(position).split(":")[1].equals("1")) {
            holder.cb.setChecked(true);
        }

        // 根据isSelected来设置checkbox的选中状况
        holder.cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                if (isChecked) {//实现checkbox的单选功能,同样适用于radiobutton
                    if (temp != -1&&temp != compoundButton.getId()) {
                            //找到上次点击的checkbox,并把它设置为false,对重新选择时可以将以前的关掉
                            CheckBox tempCheckBox = (CheckBox) activity.findViewById(temp);
                            if (tempCheckBox != null) {
                                tempCheckBox.setChecked(false);
                            }
                    }
                    temp = compoundButton.getId();//保存当前选中的checkbox的id值
                }
            }
        });

        if (position == temp)//比对position和当前的temp是否一致
            holder.cb.setChecked(true);
        else
            holder.cb.setChecked(false);
        return convertView;

    }


    public static class ViewHolder {
        public TextView fk;
        public CheckBox cb;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值