适合自定义适配器的构造函数

时间:2016-02-17 14:08:02

标签: java android constructor adapter android-adapter

我正在尝试创建自定义适配器,我有一个错误,说没有默认构造函数可用

public class GuessAdapter extends ArrayAdapter <Game> {

    Context context;
    int resource;
    Peg[] guess;
    LayoutInflater inflater;

    public void PegArrayAdapter(Peg[] array, Context ctxt){
        guess= array;
        context = ctxt;
        inflater = (LayoutInflater) ctxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public int getCount() {
        return guess.length;
    }

    @Override
    public Game getItem(int arg0){
        return guess[arg0];
    }

    public long getItemId(int arg0){
        return arg0;
    }

    @Override
    public View getView(int arg0, View arg1, ViewGroup arg2){

        View view = arg1;

        if (arg1==null){
            arg1 = inflater.inflate(android.R.layout.simple_list_item_1, arg2, false);
        }

        ImageView imageView =(ImageView)arg1.findViewById(R.id.imageView);
        ImageView imageView2=(ImageView)arg1.findViewById(R.id.imageView2);
        ImageView imageView3=(ImageView)arg1.findViewById(R.id.imageView3);
        ImageView imageView4=(ImageView)arg1.findViewById(R.id.imageView4);

        return view;
    }
}

这个适配器的拟合构造函数是什么?

3 个答案:

答案 0 :(得分:0)

public void GuessAdapter(Peg[] array, Context ctxt){
     super(ctxt, 0, array);
}

答案 1 :(得分:0)

您尚未向自定义适配器添加任何构造函数。你需要创建一个可以调用super的构造函数。

在自定义适配器中添加此方法

public GuessAdapter(Peg[] array, Context ctxt) {
    super(ctxt, 0, array);
    guess= array;
    context = ctxt;
    inflater = (LayoutInflater) ctxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

此外,没有使用方法PegArrayAdapter,您可以在以后删除它。

答案 2 :(得分:0)

制作自定义适配器的最佳方法是使用BASEADAPTER。 这没有问题。 只需将CustomAdapter类扩展为BaseAdapter即可。 我希望它能正常工作。