我正在尝试为android微调器创建自定义样式,但是有几个问题。 我在很多例子中都注意到,它们将数组传递给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列表类型引用的语法。
请善意解释这一点。
答案 0 :(得分:2)
首先,
您正在使用默认 ArrayAdapter
类..
new ArrayAdapter<String>();
使用String
类进行数据绑定。如果您想使用ArrayAdapter
或ArrayList
制作List
,则必须通过展开ArrayAdapter<Custom_Class>
或{{1}来制作自定义适配器 }。
BaseAdapter
类可以处理任何Java对象作为输入。它将此输入的数据映射到布局中的TextView。
ArrayAdapter
使用数据输入对象的ArrayAdapter
方法来确定应显示的String。
查看How to use ArrayAdapter<myClass>和此Tutorial
<强>更新强>
toString()
答案 1 :(得分:0)
以下是更正的解决方案,
public class MyAdapter extends ArrayAdapter<String>
{
public MyAdapter(Context context, int textViewResourceId,List<String> objects) {
super(context, textViewResourceId, objects);
// TODO Auto-generated constructor stub
}
@Override
public View getDropDownView(int position, View convertView,ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
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;
}
}
基本上,我犯了1个错误,其中一个是我没有正确初始化构造函数。