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