我试图创建一个带有 2 个字符串数组的构造函数,但它说它无法解析该方法。
我正在尝试制作一个自定义列表适配器:
public class CustomListAdapter extends ArrayAdapter<String> {
private final String[] søgeord;
private final Activity context;
private final String[] itemname;
private final Integer[] imgid;
LayoutInflater inflater;
public CustomListAdapter(Activity context, String[] itemname, Integer[] imgid, String[] søgeord) {
super(context, R.layout.mylist, itemname, søgeord); //it can't resolve this
this.context=context;
this.itemname=itemname;
this.imgid=imgid;
this.søgeord=søgeord;
}
这只是相关代码。但是,我真的不明白为什么它会给我这个错误:无法解析方法'super(android.app.Activity, int, java.lang.String[], java.lang.String[])
我需要它包含一个 Activity 、2 个字符串数组和一个整数数组
编辑
这是我的新 CustomListAdapter
类
public class CustomListAdapter extends ArrayAdapter<Container>{
private final Activity context;
LayoutInflater inflater;
public CustomListAdapter(Activity context, Container[] containers) {
super(context, R.layout.mylist, containers);
this.context=context;
}
public View getView(int position,View view,ViewGroup parent) {
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.mylist, null);
TextView txtTitle = (TextView) view.findViewById(R.id.item);
ImageView imageView = (ImageView) view.findViewById(R.id.icon);
TextView extratxt = (TextView) view.findViewById(R.id.textView1);
Container c = new Container();
txtTitle.setText(c.itemname[position]);
imageView.setImageResource(c.imgid[position]);
extratxt.setText(c.itemname[position]);
return view;
};
}
这是 OnCreate 方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
final String[] søgestreng = getIntent().getExtras().getStringArray("søg");
filterText = (EditText)findViewById(R.id.sogefelt);
ListView itemList = (ListView)findViewById(R.id.listView);
listAdapter = new CustomListAdapter (this, Container[] containers); //this is wrong, why?
itemList.setAdapter(listAdapter);
itemList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), "Position " + position, Toast.LENGTH_LONG).show();
}
});
最佳答案
您应该将数据包装到容器中并创建这些容器的列表,然后将其输入到 ArrayAdapter
String[] itemname, Integer[] imgid, String[] søgeord
适合
public class Container{
public final String søgeord;
public final String itemname;
public final Integer imgid;
Container(String søgeord, String itemname, Integer imgid){
this.søgeord=søgeord;
this.itemname = itemname;
this.imgid = imgid;
}
}
变成
Container[] containers;
然后可以输入到 super 构造函数中
super(context, R.layout.mylist, containers);
这样所有数组的大小就不会不匹配。
总而言之:
public class CustomListAdapter extends ArrayAdapter<Container>
private final Activity context;
LayoutInflater inflater;
public CustomListAdapter(Activity context, Container[] containers) {
super(context, R.layout.mylist, containers);
this.context=context;
}
然后你可以像这样访问getView
中的数据:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Container currentItem = getItem(position);
...
return rowView;
}
关于java - 为什么不能解析方法呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33838682/