Java 如何将参数传递到超类?
我正在尝试自定义ListView示例。代码如下: //适配器Java 如何将参数传递到超类?,java,android,Java,Android,我正在尝试自定义ListView示例。代码如下: //适配器 public class CustomList extends ArrayAdapter<String> { private final Activity context; private final String[] web; private final Integer[] imageId; public CustomList ( Activity context, String[]
public class CustomList extends ArrayAdapter<String>
{
private final Activity context;
private final String[] web;
private final Integer[] imageId;
public CustomList ( Activity context, String[] web, Integer[] imageId )
{
super ( context, R.layout.list_single, web );
this.context = context;
this.web = web;
this.imageId = imageId;
}
@Override
public View getView ( int position, View view, ViewGroup parent )
{
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate( R.layout.list_single, null, true );
TextView txtTitle = ( TextView ) rowView.findViewById( R.id.txt );
ImageView imageView = ( ImageView ) rowView.findViewById( R.id.img );
txtTitle.setText( web[position] );
imageView.setImageResource(imageId[position] );
return rowView;
}
}
考虑活动代码中的以下行:
CustomList adapter=新的CustomList(MainActivity.this、web、imageId)代码>
现在我不想将这些数组参数传递到适配器代码中,那么我需要在适配器代码中做什么更改呢
我在Adapter中尝试我自己,如下所示:
String[] web = { "Google Plus","Twitter","Windows","Bing","iTunes","WordPress","Drupal" };
public CustomList ( Activity context )
{
super ( context, R.layout.list_single, web ); // error at this line
this.context = context;
}
但它给了我编译时错误在显式调用构造函数时不能引用实例字段web
将此行更改为
private static final String[] web = new String[] { "Google Plus","Twitter","Windows","Bing","iTunes","WordPress","Drupal" };
而且它应该会起作用。旁注:您不必自己持有对上下文的引用。超类已经这样做了。使用getContext()。@isnot2bad什么?我不明白。您不需要CustomList中的私有最终活动上下文,因为超类已经拥有对上下文的引用。
private static final String[] web = new String[] { "Google Plus","Twitter","Windows","Bing","iTunes","WordPress","Drupal" };