각 행에 CheckBox, TextView 및 ImageView가 포함 된 ListView를 설정하려고합니다. 구현에 내 자체 어댑터를 사용하지만 일부 스크롤 다운 할 때 이유가 없으면 선택란을 선택합니다. 예를 들어 첫 번째 행 (0 위치)의 확인란을 선택하여 스크롤 한 다음 갑자기 요소를 행 17도 확인되고 언젠가 내가 처음으로 돌아 가면 확인란이 선택되지 않습니다.목록 스크롤시 ListView의 체크 박스가 섞여 있습니다.
private class ViewHolder{
ImageView image;
TextView name;
CheckBox selected;
}
private class BrowserAdapter extends ArrayAdapter<String> {
public BrowserAdapter(Context context, int resource, int textViewResourceId, List<String> objects) {
super(context, resource, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView==null){
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.browser_list_row, parent, false);
holder = new ViewHolder();
holder.image = (ImageView) convertView.findViewById(R.id.browser_image);
holder.name = (TextView) convertView.findViewById(R.id.browser_file_name);
holder.name.setOnClickListener(ActionBar.this);
holder.selected = (CheckBox) convertView.findViewById(R.id.browser_selected);
holder.selected.setOnCheckedChangeListener(ActionBar.this);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
setViewInfo(holder.image, holder.name, holder.selected, position);
return convertView;
}
private void setViewInfo(ImageView image, TextView name, CheckBox selected , int position) {
name.setTag(position);
selected.setTag(position);
selected.setChecked(checkedItems[position]);
name.setText(myList.get(position));
File temp_file = new File(file, myList.get(position));
if (temp_file.isFile())
image.setImageResource(R.drawable.mp3file);
else
image.setImageResource(R.drawable.folder);
}
}//class BroswerAdapter
인수 checkedItems 다음 코드에서와 같이 목록에서 체크 박스의 상태를 저장 부울 배열 :
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
checkedItems[(Integer)buttonView.getTag()] = isChecked;
}
수 당신이 제발
나는 다음과 같은 코드를 사용 내가 뭘 잘못하고 있는지 알아낼 수있게 도와 줘?편집 : convertView를 사용하지 않고 getView 함수를 호출 할 때마다보기를 부 풀리는 간단한 방법을 사용할 때 모든 것이 잘 작동합니다.
는
또한 setChecked() 메소드로 변경하려고했지만 체크 박스가 여전히 혼합되어 있으며 문제가 여전히 발생합니다. – galvan
개인 기능 SetViewInfo()에서 확인란의 태그를 위치로 설정합니다. 나는 또한 내가 선택한 각 확인란의 번호를 기록하려고 시도하고 정확한 번호를 각 확인란을 인쇄합니다. – galvan