Проблемы с ViewBinder - PullRequest
       32

Проблемы с ViewBinder

1 голос
/ 22 февраля 2011

Мне нужно отобразить 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 строк, и когда я прокручиваю вниз, случается так, что изображение пятой строки совпадает с изображением первой строки, а последующие изображения тоже неправильные.

Может кто-нибудь сказать мне, почему?

1 Ответ

3 голосов
/ 22 августа 2011

Это потому, что представление первой строки повторно используется для пятой строки, так как первая строка теперь больше не видна. Проблема в вашем классе адаптера.

В методе getView() не используйте convertview повторно, вместо этого каждый раз возвращайте новое представление. Это не рекомендуемое решение, но его следует использовать в качестве крайней меры.

...