Arrayadapter无法解析构造函数:找不到合适的构造函数,实际和形式参数的长度不同

时间:2016-01-24 12:13:52

标签: java android constructor android-arrayadapter

我到处搜索,但无法找到解决问题的方法。我是java的新手,我正在尝试构建应用,但出于某种原因,我无法解决这个问题。我收到这个错误:

  

错误:(68,33)错误:找不到合适的构造函数   ArrayAdapter(OneFragment,int,String [])构造函数   ArrayAdapter.ArrayAdapter(Context,int,int,List)不是   适用的(实际和正式的参数列表长度不同)   构造函数ArrayAdapter.ArrayAdapter(Context,int,List)不是   适用(实际参数OneFragment无法转换为Context   通过方法调用转换)构造函数   ArrayAdapter.ArrayAdapter(Context,int,int,String [])不适用   (实际和形式参数列表的长度不同)构造函数   ArrayAdapter.ArrayAdapter(Context,int,String [])不适用   (实际参数OneFragment无法通过方法转换为Context   调用转换)构造函数   ArrayAdapter.ArrayAdapter(Context,int,int)不适用(实际   参数OneFragment无法通过方法转换为Context   调用转换)构造函数   ArrayAdapter.ArrayAdapter(Context,int)不适用(实际和   正式参数列表的长度不同)

代码(OneFragment.java):

package memo.javahelps.com.hanzesoep;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class OneFragment extends Fragment{

    ListView list;
    String[] itemname = {
            "Kippensoep",
            "Tomatensoep",
            "Thaise Kippensoep"
    };

    Integer[] imgid = {
            R.mipmap.kippensoep,
            R.drawable.tomatensoep,
            R.drawable.thaisekip,
    };

    public OneFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_one, container, false);

        CustomListAdapter adapter = new CustomListAdapter(getActivity(), itemname, imgid);

        list=(ListView) rootView.findViewById(R.id.list);
        list.setAdapter(adapter);


        return rootView;



        /* op item klikken */


        ArrayAdapter adapter2 = new ArrayAdapter<String>(OneFragment.this,
                R.layout.list_item, itemname);

        list.setAdapter(adapter2);

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                switch (position) {
                    case 0:
                        Intent newActivity = new Intent(OneFragment.this.getActivity(), Kippensoep.class);
                        startActivity(newActivity);
                        break;


                }

            }
        });

}


    }

我尝试使用arrayadapter在listview中单独获取单独的项目。谁能帮我?我做错了什么?

1 个答案:

答案 0 :(得分:1)

与您的构造函数调用最相似的ArrayAdapter构造函数是ArrayAdapter.ArrayAdapter(Context,int,String[]),但它不适用于actual argument OneFragment cannot be converted to Context by method invocation conversion

下面

    ArrayAdapter adapter2 = new ArrayAdapter<String>(OneFragment.this,
            R.layout.list_item, itemname);

您正在将Fragment个实例传递到需要ArrayAdapter的{​​{1}}。您应该通过封闭的Context代替:

Activity

此外, ArrayAdapter adapter2 = new ArrayAdapter<String>(getActivity(), R.layout.list_item, itemname); 应该是return rootView;方法中的最后一个语句。否则,它后面的代码将无法访问。