여러 선택을 허용하고 오른쪽에 체크 박스를 표시하는 ActivityList로로드하는 사용자 지정 개체 목록이 있습니다. 이러한 사용자 정의 객체에는 "enabled"라는 필드가 있습니다. 데이터를로드 할 때 개체 목록을 스크롤하고 사용 필드가 true로 표시된 개체를 나타내는 각 행의 확인란을 선택합니다. 현재 내가 원하는대로 ActivityList에로드되는 모든 레코드가 있지만 "사용 가능"으로 표시된 경우에도 행을 "선택"할 수 없습니다. 직접 setListAdapter를 호출 한 후이 코드를 넣어 가지고 미리 선택된 행이있는 ActivityList로드
for (int i = 0; i < sourceList.length; i++) {
DataSource d = sourceList[i];
view.getChildAt(i).getClass().toString());
CheckedTextView checkView = (CheckedTextView)view.getChildAt(i);
checkView.setChecked(Boolean.parseBoolean(d.enabled));
}
을 확인하고 나는 onContentChanged() 함수에 넣어대로
이
내가 행을 표시하기 위해 사용하고있는 코드입니다. 그러나 두 위치 모두에서 행이 아직 표시되지 않으므로 view.getChildAt (i)는 null을 반환하므로 행이 검사되지 않습니다.누구나이 코드를 어디에 넣을 수 있는지 알려주시겠습니까? 그러면 모든 행이 추가되고 화면에 표시된 후에 실행될 수 있습니까?
감사합니다.
원래 ArrayAdapter를 사용하고 있던 사용자 지정 어댑터가 없었습니다. getView() 메서드를 재정의 (override)하기 위해서, 커스텀 어댑터와 확장 된 ArrayAdapter를 작성했습니다. ArrayAdapter 클래스가 대부분의 작업을 수행하도록 허용하고 있지만 getView()를 재정의하고 있습니다. 여기의 getView (내 코드)에도 확인란이 코드 없음에
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = super.getView(position, convertView, parent);
if (convertView.getClass() == CheckedTextView.class){
CheckedTextView checkView = (CheckedTextView)convertView;
DataSource d = getItem(position);
checkView.setText(d.getName());
checkView.setChecked(Boolean.parseBoolean(d.enabled));
}
return convertView;
}
이 확인되고있다. 데이터 소스의 이름 필드가 텍스트로 설정되어 있지만 setChecked() 메소드가 작동하지 않는 것 같습니다. 나는 또한 열심히 코딩을 시도했다.
checkView.setChecked(true);
그건 나에게도 효과가 없었다. 내가 잘못하고있는 것에 대한 아이디어가 더 있으십니까?
다시 한번 감사드립니다!