GridView在第二次或第三次重新打开应用程序时包含重复项

时间:2014-05-21 10:13:23

标签: android android-gridview

在我的应用中,我使用适配器设置GridView。在第一次正确加载,但在关闭我的应用程序后,如果我重新打开,则gridview的内容加倍。 (即)gridview中的每个数据再次添加。我不知道错误。

MainActivity:

       girGridView=(GridView) findViewById(R.id.gridView1_bir);
       ImageAdapter adapter;
       adapter=new ImageAdapter(MainActivity.this);
       girGridView.setAdapter(adapter);
       girGridView.setColumnWidth(100);

ImageAdapter.class:

public class ImageAdapter extends BaseAdapter implements ListAdapter {
    private Context context;
    public ImageAdapter(Context context) {
        super();
        this.context = context;

        GridViewConfig.addImageUrls();
    }

    public ImageAdapter(Context context1, String ff) {

        super();
        String g=ff;
        this.context = context1;

        GridViewConfig.addImageUrls(g);
    }

    @Override
public int getCount() {
    return GridViewConfig.getResim_list().size();
}

@Override
public Object getItem(int position) {

    return GridViewConfig.getResim_list().get(position);
}

@Override
public long getItemId(int position) {

    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;
    if(convertView==null)
    {
        imageView=new ImageView(context);
        imageView.setLayoutParams(new GridView.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

        imageView.setImageDrawable(LoadImageFromURL(GridViewConfig.getResim_list().get(position)));
    }else{
        imageView=(ImageView)convertView;
    }

    return imageView;
}

private Drawable LoadImageFromURL(String url)
{
try
{
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src");
return d;
}catch (Exception e) {
System.out.println(e);
return null;
}
}
}

3 个答案:

答案 0 :(得分:0)

在所有适配器构造函数中,您使用GridViewConfig.addImageUrls(g); GridViewConfig是什么?如果它是单音,那么每次创建新适配器时都只需添加新图像。

答案 1 :(得分:0)

什么是GridViewConfig?
可能的答案,它是一个包含你的数据的类,
它是在每次调用适配器构造函数时添加图像,而不是替换当前图像..你可以这样说:
初始数据:
1. urlimage1

创建适配器时,它将另一个图像添加到GridViewConfig,因此数据变为:
1. urlimage1
2. urlimage1

因此,为避免这种情况,您必须在适配器构造函数上创建一个新的GridViewConfig,以便在每个适配器创建时为空

好吧,如果GridViewConfig是一个班级

答案 2 :(得分:0)

我找到了解决方案,我在添加图像到gridview时添加了创建的新Arraylist。而已。 (即)我创建了arraylist来存储GridViewConfig类中的图像。现在我在添加图像之前更改为arraylist的创建。(每次加载时都将图像添加到新创建的数组中)因此我解决了我的问题。感谢所有帮助过的人。