自定义listview的布局中用的是:
<CheckBox
android:id="@+id/im_pb"
android:layout_width="17dp"
android:layout_height="17dp"
android:layout_marginRight="10dp"
android:background="@drawable/check_style"
android:button="@null"
android:visibility="gone"
android:focusable="false"></CheckBox>
check_style:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/fif" android:state_checked="true"></item>
<item android:drawable="@drawable/fif" android:state_selected="true"></item>
<item android:drawable="@drawable/fif" android:state_pressed="true"></item>
<item android:drawable="@drawable/fif_1"></item>
</selector>
因为我实现的功能是,checkbox一开始是隐藏的,点击item显示对应的checkbox,其他隐藏,所以可以不用添加点击效果,直接放个静态的就行。
然后在adapter中定义:HashMap<String, Boolean> states = new HashMap<String, Boolean>();// 用于记录每个checkbox的状态,并保证只可选一个
lv_person_bind.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
final int pos, long arg3) {
// 重置,确保最多只有一项被选中
for (String key : states.keySet()) {
states.put(key, false);
}
states.put(String.valueOf(pos), true);
notifyDataSetChanged();
}
});
}
});
boolean res = false;
if (states.get(String.valueOf(position)) == null
|| states.get(String.valueOf(position)) == false) {
res = false;
states.put(String.valueOf(position), false);
holder.cb_pb.setVisibility(View.GONE);
} else{
res = true;
holder.cb_pb.setVisibility(View.VISIBLE);
}
holder.cb_pb.setChecked(res);
这样效果就实现了···
<CheckBox
android:id="@+id/im_pb"
android:layout_width="17dp"
android:layout_height="17dp"
android:layout_marginRight="10dp"
android:background="@drawable/check_style"
android:button="@null"
android:visibility="gone"
android:focusable="false"></CheckBox>
check_style:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/fif" android:state_checked="true"></item>
<item android:drawable="@drawable/fif" android:state_selected="true"></item>
<item android:drawable="@drawable/fif" android:state_pressed="true"></item>
<item android:drawable="@drawable/fif_1"></item>
</selector>
因为我实现的功能是,checkbox一开始是隐藏的,点击item显示对应的checkbox,其他隐藏,所以可以不用添加点击效果,直接放个静态的就行。
然后在adapter中定义:HashMap<String, Boolean> states = new HashMap<String, Boolean>();// 用于记录每个checkbox的状态,并保证只可选一个
lv_person_bind.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
final int pos, long arg3) {
// 重置,确保最多只有一项被选中
for (String key : states.keySet()) {
states.put(key, false);
}
states.put(String.valueOf(pos), true);
notifyDataSetChanged();
}
});
}
});
boolean res = false;
if (states.get(String.valueOf(position)) == null
|| states.get(String.valueOf(position)) == false) {
res = false;
states.put(String.valueOf(position), false);
holder.cb_pb.setVisibility(View.GONE);
} else{
res = true;
holder.cb_pb.setVisibility(View.VISIBLE);
}
holder.cb_pb.setChecked(res);
这样效果就实现了···