java - 为什么不能解析方法呢?

标签 java android

我试图创建一个带有 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/

相关文章:

java - JButton 忽略指示的大小

java - Tomcat 8 : HTTP Status 405 - HTTP method GET is not supported by this URL

android - 在 Android 中构建 PDFium

Android:在嵌套布局中动态添加 View

android - 旋转设备时崩溃 - 生命周期问题

java - java 中与 ENUM 不兼容的映射条目

java - 创建一个 'Empty Shell' Jar

java - Integer.parseInt() 异常处理概念

java - 无法使用 Android Studio 在 Java 中打印匹配的 HashMap 键

android - 如何在 QuickBlox municate android 中通过 Id 获取聊天对话框?