java将列表传递给自定义视图?
我正在尝试为安卓 spinner定制一个样式,但是有几个问题。 我注意到在许多示例中,它们将数组传递给getCustomView方法。我想知道我是否可以传递一个列表而不是数组
第二个问题是为什么他们在类变量范围内声明变量和初始化? 他们已经声明了这样的数组
String []data1={"Brainbitz:java","Brainbitz:Android","Brainbitz:Embedded Systems","Brainbitz:PHP"};
类内变量范围。但当我试图为列表做些什么时,我得到了一个错误。为什么
三是
如果我们可以将列表传递给getCustomView,我该怎么做?以下是教程tutorial的链接
我正在考虑这个源代码
public View getCustomView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater=getLayoutInflater();
View row=inflater.inflate(R.layout.spinner, parent, false);
TextView label=(TextView)row.findViewById(R.id.textView1);
label.setText(list3.get(position));
// TextView sub=(TextView)row.findViewById(R.id.textView2);
// sub.setText(data2[position]);
//
// ImageView icon=(ImageView)row.findViewById(R.id.imageView1);
// icon.setImageResource(images[position]);
return row;
}
在上面的代码中,我不知道将位置传递给list3列表类型引用的语法
请解释一下
# 1 楼答案
首先
您正在使用默认的
ArrayAdapter
类它使用
String
类进行数据绑定。如果你想用ArrayList
或List
来制作ArrayAdapter
,你必须通过扩展ArrayAdapter<Custom_Class>
或BaseAdapter
来制作一个自定义适配器ArrayAdapter
类可以处理任何Java对象作为输入。它将此输入的数据映射到布局中的文本视图ArrayAdapter
使用数据输入对象的toString()
方法来确定应该显示的字符串看看How to use ArrayAdapter<myClass>和这个Tutorial
更新:
# 2 楼答案
这是正确的解决方案
基本上,我犯了一个错误,一个是我没有正确初始化构造函数