Android ArrayAdapter';s add方法添加两次

Android ArrayAdapter';s add方法添加两次,android,android-arrayadapter,Android,Android Arrayadapter,我有IconicAdapter扩展ArrayAdapter: class IconicAdapter extends ArrayAdapter<String> { IconicAdapter() { super(MyService.this, R.layout.activity_listview, R.id.text1, entries); } @Override public View getView(int positio

我有
IconicAdapter
扩展
ArrayAdapter

class IconicAdapter extends ArrayAdapter<String> {
    IconicAdapter() {
            super(MyService.this, R.layout.activity_listview, R.id.text1, entries);
    }

    @Override
    public View getView(int position,View convertView,ViewGroup parent) {
            View row=super.getView(position, convertView, parent);
            ImageView icon=(ImageView)row.findViewById(R.id.img1);
            icon.setImageResource(R.drawable.ic_launcher);
            return(row);
    }
}

有什么原因吗?

我认为问题在于此

IconicAdapter ia=new IconicAdapter();`
您正在将适配器添加到列表中,这里您已经添加了适配器

 lv.setAdapter(ia);
这就是你想做的

    iv.add("1000"); here add something in listview not in adapter

我也有同样的问题,但事实证明我犯了一个非常愚蠢的错误。也许这会帮助一些人。问题是我添加了两次项,都是在
ArrayAdapter
中,也都是在带有项的列表中

基本上,如果使用构造函数:

ArrayAdapter(上下文、int资源、列表对象)

ArrayAdapter(上下文上下文、int资源、int文本视图资源ID、列表对象)

然后应该避免保留对传递的
对象的引用,因为适配器只保留对它的引用,而不复制其值。如果您需要从其他地方了解这些对象的值,则可以复制它们,或者只需使用
getCount()
getItem(int-position)
方法访问它们。您绝对应该避免尝试修改
ArrayAdapter
引用的数组或列表


希望这对某人有帮助:D

没有眼镜蛇。。通过执行ia.添加(“1000”);我只是在列表视图中再添加一项..我不明白。ListView中没有“添加(字符串str)”之类的方法。这怎么可能是一个公认的答案?
    iv.add("1000"); here add something in listview not in adapter