0

この例を使用して Lazylist を作成しました: ListView での画像の遅延ロード

しかし、私のリストでは、すべての行に画像があるわけではありません。そのため、アダプター内のコードを更新して、画像がない場合に画像ビューを非表示にしました。

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)
        vi = inflater.inflate(R.layout.item, null);

    TextView text=(TextView)vi.findViewById(R.id.text);;
    ImageView image=(ImageView)vi.findViewById(R.id.image);
    text.setText("item "+position);
    if(data[position].contains(".jpg") || data[position].contains(".png"))
    {
        imageLoader.DisplayImage(data[position], image);
    }else
        image.setVisibility(image.GONE);
    return vi;
}

これをテストするために、次のように 1 つの画像を省略しました。

private String[] mStrings={
        "http://a3.twimg.com/profile_images/670625317/aam-logo-v3-twitter.png",
        "",
        "http://a3.twimg.com/profile_images/121630227/Droid_normal.jpg",
.....

ただし、アプリを実行した後、リストが奇妙な動作でスクロールしているときに他の画像も非表示になり始めたことに気付きました。上記の 2 つの変更をコードに加えてリストをテストするだけで、問題をシミュレートできます。

4

1 に答える 1

0

状態をリセットしていません。

if(data[position].contains(".jpg") || data[position].contains(".png"))
{
    image.setVisibility(View.VISIBLE);
    imageLoader.DisplayImage(data[position], image);
}else{
    image.setVisibility(View.GONE);
}

また、画像がデフォルトのドローアブルに設定されているか、画像の代わりにプログレスバーが表示されている読み込み状態をお勧めします。

于 2013-09-04T09:34:24.197 に答える