1
私はリサイクルされたリストビューデータを避けるための標準的なパターンに従うと信じていますが、私は失敗します。いつものように、リストビューの最後の2つの項目あなたも、あなたの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