2016-08-08 3 views
0

私はListViewを動的に追加された画像で持っています。ユーザーがリストをスクロールすると、行が重複し、間違ったアイテムが表示され、LayoutParamsの設定が失われます。 この問題を解決するにはどうすればよいですか?ここでListViewリサイクル(スクロールで複製)を処理する

は私のgetViewメソッドのコードは次のとおりです。

public View getView(int position, View view, ViewGroup parent) { 
    View rowView = view; 
    ViewHolder viewHolder = new ViewHolder(); 
    if (rowView == null) { 
     LayoutInflater inflater = ctx.getLayoutInflater(); 
     rowView = inflater.inflate(R.layout.list_row, null, true); 
     viewHolder.linearLayout = (LinearLayout) rowView.findViewById(R.id.ll_row); 
     viewHolder.textView = (TextView) rowView.findViewById(R.id.textview_row); 
     rowView.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder)rowView.getTag(); 
    } 
    imageResourseId = new ArrayList<>(Arrays.asList(convertStringToArray(imageNames.get(position)))); 
    for (int i = 0; i < imageResourseId.size(); i++) { 
     LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
       0, 
       ViewGroup.LayoutParams.WRAP_CONTENT, 0.14f); 
     ImageView imageView = new ImageView(ctx); 
     //imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
     imageView.setLayoutParams(param); 
     imageView.setImageResource(ctx.getResources().getIdentifier(imageResourseId.get(i), "drawable", ctx.getPackageName())); 
     viewHolder.linearLayout.addView(imageView); 
    } 
    viewHolder.linearLayout.setTag("images"); 
    viewHolder.textView.setText(textArray.get(position)); 
    return rowView; 
} 
+0

show imageResourseIdをどのようにしたいですか? –

+0

ArrayList(画像名は – Kvazios

+1

) 'rowView!= null'の場合、新しい' ViewHolder'を作成する必要はありません。 – manfcas

答えて

0

これは、ビューをリサイクルして膨張されている方法に基づいています。まず、イメージのソースをnullに設定してから、希望のイメージを設定します。これは少し早いですが、私は詳細を思い出すことができません。

+0

ありがとうございます!私の悪い、私はすべてのLinearLayoutの子供を削除することを忘れて、新しいを追加する前に。 – Kvazios

関連する問題