ViewBinder的问题

时间:2011-02-22 12:04:34

标签: android android-listview adapter android-viewbinder

我需要显示带有一些图像的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行的空间,当我向下滚动时,第五行的图像与第一行的图像相同,后续图像也是错误的。< / p>

有人可以告诉我为什么吗?

1 个答案:

答案 0 :(得分:3)

这是因为第一行的视图被重用于第五行,因为第一行现在不再可见。问题出在您的适配器类中。

getView()方法中,请勿重复使用convertview,而是每次都返回一个新视图。这不是推荐的解决方案,而是作为最后的手段使用。