약 200 개의 항목이있는 목록보기가 있습니다. 확인란 맞춤형 ArrayAdapter를 구현했습니다. SparseBooleanArray를 사용하여 상자 값을 저장합니다.안드로이드 - ListView : 선택하지 않은 체크 박스
이 모든 것은 정상적으로 작동하지만 그래픽으로 상자 검사를 업데이트 할 수 없습니다. 사용자가 클릭하면 상자가 선택됩니다. 하지만, 내 코드에서 setChecked를 호출하면 상자 자체에 아무런 영향을 미치지 않습니다. 따라서 해당 값이 true 인 경우에도 똑딱 거리지 않습니다.
모든 체크 박스를 true로 설정하고 행운을 시험해 보았습니다. 테스트를 거쳤음에도 불구하고 실제로 표시되지는 않았습니다.
class CheckBoxArrayAdapter extends ArrayAdapter<String> implements CompoundButton.OnCheckedChangeListener {
private SparseBooleanArray checkedBoxes;
Context context;
public CheckBoxArrayAdapter(Context context, int resource, List<String> objects) {
super(context, resource, objects);
checkedBoxes = new SparseBooleanArray();
this.context = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final CheckBox view = (CheckBox) super.getView(position, convertView, parent);
//if(convertView == null) {
//convertView = view.inflate(context, R.layout.list_item, null);
//}
view.setTag(position);
view.setChecked(checkedBoxes.get(position, false));
System.out.println(view.getTag() + ": " + view.isChecked());
view.setOnCheckedChangeListener(this);
return view;
}
public boolean isChecked(int position) {
return checkedBoxes.get(position, false);
}
public void setChecked(int position, boolean isChecked) {
checkedBoxes.put(position, isChecked);
notifyDataSetChanged();
}
public void toggle(int position) {
setChecked(position, !isChecked(position));
}
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
checkedBoxes.put((Integer) buttonView.getTag(), buttonView.isChecked());
}
}
감사들 : 당신이 볼 필요하지만 좋은 측정을 내 어댑터에 차버 무슨 코드가 확실하지! 좋아
언급 할만한 가치가 없을 수도 있지만, XML에서 사용할 수 있도록 확인란을 설정해도 아무것도 표시되지 않았습니다. 단조 로움을 놓치고 있지만 꼭 볼 수는 없습니다. –
호기심에서 ListView에서 다중 선택 지원 기능을 사용하지 않는 이유는 무엇입니까? http://developer.android.com/reference/android/widget/AbsListView.html#attr_android:choiceMode –
android : choiceMode를 객관식으로 추가했지만 사용자 정의 어댑터를 사용하는 것이 일반적인 합의처럼 보였습니다. 안드로이드 애플 리케이션의 대부분은 체크 박스를 통합하는 것 같았다. –