Java 为什么每个扩展ArrayAdapter的示例都将列表保存为私有?
为什么在我看到的每个扩展类ArrayAdapter的示例中,它都会覆盖接受T[]对象的构造函数,并引用它自己的私有变量,并在覆盖getView时使用引用的变量? 这是如何动态添加对象的? 使用add方法将新项添加到ArrayAdapter时,是否会更新值? 我可以在listview中使用addheaderview而不是实现自己的适配器吗Java 为什么每个扩展ArrayAdapter的示例都将列表保存为私有?,java,android,Java,Android,为什么在我看到的每个扩展类ArrayAdapter的示例中,它都会覆盖接受T[]对象的构造函数,并引用它自己的私有变量,并在覆盖getView时使用引用的变量? 这是如何动态添加对象的? 使用add方法将新项添加到ArrayAdapter时,是否会更新值? 我可以在listview中使用addheaderview而不是实现自己的适配器吗 public class MySimpleArrayAdapter extends ArrayAdapter<String> { private
public class MySimpleArrayAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] values;
public MySimpleArrayAdapter(Context context, String[] values) {
super(context, R.layout.rowlayout, values);
this.context = context;
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
textView.setText(values[position]);
// change the icon for Windows and iPhone
String s = values[position];
if (s.startsWith("iPhone")) {
imageView.setImageResource(R.drawable.no);
} else {
imageView.setImageResource(R.drawable.ok);
}
return rowView;
}
}
使用获取列表的构造函数。。。您的适配器有一个add方法…但是为什么要将它们保存在另一个不同的列表中呢?当我添加新元素时,它们不会被添加到我的列表中,在本例中是值。您可以在适配器中创建方法,将新字符串添加到私有列表中,然后调用notifyDataSetChanged,使listView知道有一些新内容要显示您正在绕过所有内容,这听起来像是一个补丁您不需要values对象,您可以通过getItem获取在构造函数中传递的值。。。