网上看了好多单选的案例,没有看到说从数据库查值的为单选的,自己最近又有这个需求,索性就写一个吧
,虽然说现在都流行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;
}
}