1

いくつかの画像を表示する必要がありListView、次のコードを使用しています。

    dataText = (TextView)findViewById(R.id.data);
    dataText.setText(camping.stringIn + " >> " + camping.stringOut);

    l = name.length;

    ArrayList<tipologia> tipologieList=new ArrayList<tipologia>();

    tipologia[] tip = new tipologia[l];

    for (int i = 0; i < l; i++) 
    {
        int rand = new Random().nextInt(3);
        availability[i] = String.format("%d", rand);
        tip[i] = new tipologia(image[i]);

    }                      

    for(int i=0; i<tip.length; i++) 
    {
        tipologieList.add(tip[i]);
    }

    ArrayList<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();


    for(int i=0;i<tipologieList.size();i++){
        tipologia t = tipologieList.get(i);

        HashMap<String,Object> tipologieMap = new HashMap<String, Object>();

        tipologieMap.put("image", t.getImm()); 

        data.add(tipologieMap);  
    }


    String[] from={"image"};
    int[] to={R.id.personImage};

    SimpleAdapterMod adapter=new SimpleAdapterMod(
            getApplicationContext(),
            data,
            R.layout.tipologia,
            from,
            to);

    adapter.setViewBinder(new ViewBinder() {

        public boolean setViewValue(View view, Object data,
                String textRepresentation) {

            if(data instanceof String && view instanceof Immagine ){

                                  ((Immagine)view).loadFromURL((String)data);

                }
                return true;
            }
                else{
                    return false;
                }
        }
    });

問題があります: リストには 4 行のスペースがあり、下にスクロールすると、5 行目の画像が最初の行の画像と同じで、後続の画像も間違っています。

誰かが理由を教えてもらえますか?

4

1 に答える 1

3

これは、最初の行が表示されなくなったため、最初の行のビューが5番目の行に再利用されるためです。問題はアダプタクラスにあります。メソッドでは、再利用せず

、代わりに毎回新しいビューを返します。これは推奨される解決策ではありませんが、最後の手段として使用する必要があります。getView()convertview

于 2011-08-22T06:43:21.120 に答える