Java 为什么每个扩展ArrayAdapter的示例都将列表保存为私有?

Java 为什么每个扩展ArrayAdapter的示例都将列表保存为私有?,java,android,Java,Android,为什么在我看到的每个扩展类ArrayAdapter的示例中,它都会覆盖接受T[]对象的构造函数,并引用它自己的私有变量,并在覆盖getView时使用引用的变量? 这是如何动态添加对象的? 使用add方法将新项添加到ArrayAdapter时,是否会更新值? 我可以在listview中使用addheaderview而不是实现自己的适配器吗 public class MySimpleArrayAdapter extends ArrayAdapter<String> { private

为什么在我看到的每个扩展类ArrayAdapter的示例中,它都会覆盖接受T[]对象的构造函数,并引用它自己的私有变量,并在覆盖getView时使用引用的变量? 这是如何动态添加对象的? 使用add方法将新项添加到ArrayAdapter时,是否会更新值? 我可以在listview中使用addheaderview而不是实现自己的适配器吗

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获取在构造函数中传递的值。。。