2014-01-17 1 views
0

내 중재 모델에 대한 어댑터를 만들고 싶습니다. 항목에 체크 상자가있는 두 개의 textview가 있습니다. 통합 모델에는 많은 String 필드 만 있습니다. 내 Basedapter을 확장 어댑터 :확인란에 임의 항목이 선택되어있는 어댑터

public class CBAdapter extends BaseAdapter { 

private LinkedList<Intervention> mData; 
private Context mContext; 

public CBAdapter(Context context, LinkedList<Intervention> data) { 
    mContext = context; 
    this.mData = data; 
} 

static class ViewHolder { 
    TextView tvTopText; 
    TextView tvLowText; 
    CheckBox checkbox; 
} 

@Override 
public int getCount() { 
    return mData.size(); 
} 

@Override 
public Intervention getItem(int position) { 
    return mData.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder viewHolder; 
    if (convertView == null) { 
     viewHolder = new ViewHolder(); 
     convertView = LayoutInflater.from(mContext).inflate(R.layout.intervention_select_item, 
       null); 
     viewHolder.tvTopText = (TextView) convertView.findViewById(R.id.tvTopText); 
     viewHolder.tvLowText = (TextView) convertView.findViewById(R.id.tvBotText); 

     viewHolder.checkbox = (CheckBox) convertView.findViewById(R.id.cbInterCheck); 

     convertView.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 
    final int pos = position; 
    viewHolder.tvTopText.setText(mData.get(position).getName()); 
    viewHolder.tvLowText.setText(mData.get(position).getGlobalInterId()); 

    viewHolder.checkbox 
      .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        mData.get(pos).setSelected(isChecked); 
       } 
      }); 
    return convertView; 
} 

public void setData(LinkedList<Intervention> data) { 
    this.mData = data; 
    this.notifyDataSetChanged(); 
} 

}

그러나 내가 클릭있을 때, 예를 들어, 세 번째 항목은, 그것은 3 개 13 항목을 확인합니다. 무슨 문제입니까? 확인란을 사용하여 어댑터를 만드는 방법은 무엇입니까? . :(

답변

2

당신은 구현되지 않습니다 "convertView"재활용 제대로이 행은 오류가 발생하지만, 잘못하지 않습니다 : 그것은 캐스트 있도록

viewHolder = (ViewHolder) convertView.getTag(); 

"GetTag의"반환 "개체"를 입력하지만, 외설 . 당신이 원하는 't 그것은해야한다 :

viewHolder = (ViewHolder) convertView; 

그런 다음 뷰는 각각 자신의 체크 박스를해야

.
관련 문제