我们正在为我们的android项目制作动态自定义数组适配器。现在我们需要在初始化此自定义适配器类时将动态android布局对象和其他数据源作为参数传递。之后,一切都将是动态的。
public class CustomAdapterView extends ArrayAdapter<String> {
private Activity context;
private String[] googleProducts;
private String[] productDescription;
private Integer[] productImage;
private Layout listItemLayout;
public CustomAdapterView(Activity context, Layout listItemLayout, String[] googleProducts, String[] productDescription, Integer[] productImage) {
super(context, R.layout.content_custom_listview, googleProducts);
// Tring to do this
//super(context, listItemLayout, googleProducts);
//Error: Cannot resolve method 'super(android.app.Activity, android.text.Layout, java.lang.String[])'
// Set Local Property
this.context = context;
this.googleProducts = googleProducts;
this.productDescription = productDescription;
this.productImage = productImage;
}
现在在super()方法中,我们想要传递动态布局以显示自定义列表视图。
super(context, listItemLayout, googleProducts);
//错误:无法解析方法'super(android.app.Activity, android.text.Layout,java.lang.String [])'
比从任何活动中调用
// Initialize
ListView lv = (ListView) findViewById(R.id.custom_listview);
Layout dynamicLayout = null;
// Our Custom Adapter Object
CustomAdapterView cav = new CustomAdapterView(this, dynamicLayout, googleProducts, productDescription, productImage);
//Set Adapter
lv.setAdapter(cav);
答案 0 :(得分:1)
R.layout.content_custom_listview
是int
因此,该签名不会有super
方法。您可以将int
类型直接传递到适配器,而不是Layout
类型。
答案 1 :(得分:0)
你好像混淆了布局&#34;资源(即包含一堆视图的xml文件,通过R.layout.foo
常量访问)和android.text.Layout
object(管理显示文本的内部,例如在TextView
中)
布局资源通常作为int
传递,或者作为从该布局资源中膨胀的View
传递。您的自定义适配器的构造函数可能非常高:
public CustomAdapterView(Activity context,
Layout listItemLayout,
String[] googleProducts,
String[] productDescription,
Integer[] productImage) {
...
}
应该像这样声明:
public CustomAdapterView(Activity context,
int listItemLayout,
String[] googleProducts,
String[] productDescription,
Integer[] productImage) {
...
}