1
나는 재활용 된 목록보기 데이터를 피하기위한 표준 패턴을 따르고 있다고 믿지만 아직 실패합니다. 평소와 같이, 목록보기의 마지막 두 항목 당신이 경우에도 ViewHolder의 모든 구성원에 대한 내용을 설정해야ListAdapters에서 재활용품 문제가 발생하지 않도록하려면 어떻게해야합니까?
public static class ViewHolder {
public ImageView img1;
public ImageView img2;
public TextView text1;
public TextView text2;
public TextView text3;
public TextView text4;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
ViewHolder holder;
if(convertView == null){
vi = inflater.inflate(R.layout.item, null);
holder=new ViewHolder();
holder.text1=(TextView)vi.findViewById(R.id.text1);
holder.text2=(TextView)vi.findViewById(R.id.text2);
holder.text3=(TextView)vi.findViewById(R.id.text3);
holder.text4=(TextView)vi.findViewById(R.id.text4);
holder.img1=(ImageView)vi.findViewById(R.id.img1);
holder.img2=(ImageView)vi.findViewById(R.id.img2);
vi.setTag(holder);
} else {
holder=(ViewHolder)vi.getTag();
}
String shorten=shortenText(t4);
holder.text.setTag(shorten);
holder.text.setText(shorten);
if(t1){
holder.text1.setTag(thisMsg.get(D_ENUM.T1));
holder.innerName.setText(thisMsg.get(thisMsg.get(D_ENUM.T1));
}
if(t2){
holder.text1.setTag(thisMsg.get(D_ENUM.T2));
holder.innerName.setText(thisMsg.get(thisMsg.get(D_ENUM.T2));
}
if(thisMsg.containsKey(D_ENUM.T3)){
String t3 = shortenText(thisMsg.get(D_ENUM.T3));
holder.innerDesc.setTag(t3);
holder.innerDesc.setText(t3);
}
holder.img1.setTag(img1);
imageLoader.DisplayImage(img1, act, holder.img1);
if(img2 != null) {
holder.innerImage.setTag(img2);
holder.innerImage.setVisibility(View.VISIBLE);
imageLoader.DisplayImage(img2, act, holder.img2);
} else {
holder.innerImage.setTag(img2);
holder.innerImage.setVisibility(View.GONE);
}
return vi;
고마워요. 나는 지금 그것을 얻을 수있을 것 같은 느낌이 든다. ..... – hunterp
당신이 대답 할 부분이 너무 많아서 고맙다. "아무 것도 표시하지 않으면 빈 값으로 설정한다고해도." 도와주세요. D – AlvaroSantisteban