参数错误 android 自定义适配器

Parameter error android custom adapter

我正在尝试使用自定义适配器创建 ListView,但出现此错误

Error:(291, 29) error: constructor Rijekdetailadapter in class Rijekdetailadapter cannot be applied to given types; required: Context,String[],String[],String[],String[],String[] found: Rijekdetail,ArrayList reason: actual and formal argument lists differ in length

请检查我的脚本

Rijekdetailadapter adapter;
ArrayList<RijekdetailModel> dataModels;

在后台进程中执行

            dataModels= new ArrayList<>();

            try {
                JSONArray jsonArray = new JSONArray(result);

                for (int i = 0; i < jsonArray.length(); i++) {
                    String ItemCode, RijekQty,Tipe, Remark, Attachment;

                    JSONObject c = jsonArray.getJSONObject(i);
                    ItemCode      = c.getString("ItemCode");
                    RijekQty      = c.getString("RijekQty");
                    Tipe          = c.getString("TipeRijek");
                    Remark        = c.getString("Remark");
                    Attachment    = c.getString("attachment");

                    dataModels.add(new RijekdetailModel( ItemCode,  RijekQty, Tipe, Remark, Attachment));

                }

            }
            catch (JSONException e) {
                Log.e("ERROR", "Couldn't Fetch json object" + e);
            }

这里是错误的部分

   @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
                 adapter  = new Rijekdetailadapter(Rijekdetail.this ,dataModels);
                ListView mylist =  findViewById(android.R.id.list);
        }

这是我的 Rijekdetailadapter

public class Rijekdetailadapter  extends BaseAdapter {

    Context context;
    String[] ItemCode,ItemName,RijekQty,Remark,Attachment;
    LayoutInflater inflater;

    public Rijekdetailadapter(Context context, String[] ItemCode,String[] ItemName,String[] RijekQty,String[] Remark,String[] Attachment) {
        this.context = context;
        this.ItemCode = ItemCode;
        this.ItemName = ItemName;
        this.RijekQty = RijekQty;
        this.Remark = Remark;
        this.Attachment = Attachment;
    }

    @Override
    public int getCount() {
        return ItemCode.length;
    }
    @Override
    public Object getItem(int position) {
        return null;
    }
    @Override
    public long getItemId(int position) {
        return 0;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View itemView = inflater.inflate(R.layout.rijekdetailitem, parent, false);
        TextView item = (TextView) itemView.findViewById(R.id.itemcode);
        TextView RijekQty = (TextView) itemView.findViewById(R.id.RijekQty);
        TextView Remark = (TextView) itemView.findViewById(R.id.Remark);
        TextView Attachment = (TextView) itemView.findViewById(R.id.Attachment);


        return itemView;
    }


}

这是我的 RijekdetailModel

public class RijekdetailModel {
    String ItemCode, RijekQty,Tipe, Remark, Attachment;

    public RijekdetailModel(String ItemCode, String RijekQty,String Tipe,String Remark,String Attachment) {
        this.ItemCode   =   ItemCode;
        this.RijekQty   =   RijekQty;
        this.Tipe       =   Tipe;
        this.Remark     =   Remark;
        this.Attachment =   Attachment;
    }

    public String getItemCode() {
        return ItemCode;
    }

    public void setItemCode(String itemCode) {
        ItemCode = itemCode;
    }

    public String getTipe() {
        return Tipe;
    }

    public void setTipe(String tipe) {
        Tipe = tipe;
    }

    public String getRijekQty() {
        return RijekQty;
    }

    public void setRijekQty(String rijekQty) {
        RijekQty = rijekQty;
    }

    public String getRemark() {
        return Remark;
    }

    public void setRemark(String remark) {
        Remark = remark;
    }

    public String getAttachment() {
        return Attachment;
    }

    public void setAttachment(String attachment) {
        Attachment = attachment;
    }
}

我该如何解决?提前致谢

替换Rijekdetailadapter代码,

 public class Rijekdetailadapter  extends BaseAdapter {

    Context context;
    ArrayList<RijekdetailModel> dataModels;
    LayoutInflater inflater;

    public Rijekdetailadapter(Context context,ArrayList<RijekdetailModel> dataModels) {
        this.context = context;
        this.dataModels= dataModels;
    }

    @Override
    public int getCount() {
        return dataModels.size();
    }
    @Override
    public Object getItem(int position) {
        return dataModels.get(position);
    }
    @Override
    public long getItemId(int position) {
        return 0;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View itemView = inflater.inflate(R.layout.rijekdetailitem, parent, false);
        TextView item = (TextView) itemView.findViewById(R.id.itemcode);
        TextView RijekQty = (TextView) itemView.findViewById(R.id.RijekQty);
        TextView Remark = (TextView) itemView.findViewById(R.id.Remark);
        TextView Attachment = (TextView) itemView.findViewById(R.id.Attachment);

   final RijekdetailModel rijekdetailModel = RijekdetailModel.get(position);

        return itemView;
    }


}

您正在创建适配器:

adapter  = new Rijekdetailadapter(Rijekdetail.this ,dataModels);

您的 Adapter 构造函数所在的位置:

public Rijekdetailadapter(Context context, String[] ItemCode,String[] ItemName,String[] RijekQty,String[] Remark,String[] Attachment) {
  ...
}

因此,您需要在创建适配器时提供正确完整的参数。

编辑 您可以像这样在 getView() 中获取 ItemCode 的值 String itemCode = dataModels.get(position).getItemCode()

 public class Rijekdetailadapter  extends BaseAdapter {

Context context;
ArrayList<RijekdetailModel> dataModels;
LayoutInflater inflater;

public Rijekdetailadapter(Context context, ArrayList<RijekdetailModel> dataModels) {
    this.context = context;
    this.dataModels = dataModels;
}

@Override
public int getCount() {
    return dataModels.size();
}
@Override
public Object getItem(int position) {
    return dataModels.get(position);
}
@Override
public long getItemId(int position) {
    return 0;
}

public View getView(int position, View convertView, ViewGroup parent) {

    inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View itemView = inflater.inflate(R.layout.rijekdetailitem, parent, false);

    // edit: you can get ItemCode here:
    String itemCode = dataModels.get(position).getItemCode();
    // after that do waht ever you want :)


    return itemView;
}
}

你的适配器设计有误, 在您的 onPostExecute() 方法中,您将适配器创建为:

adapter  = new Rijekdetailadapter(Rijekdetail.this ,dataModels);

但是在你的 Rijekdetailadapter 你的构造函数看起来像这样:

public Rijekdetailadapter(Context context, String[] ItemCode,String[] ItemName,String[] RijekQty,String[] Remark,String[] Attachment) {
    this.context = context;
    this.ItemCode = ItemCode;
    this.ItemName = ItemName;
    this.RijekQty = RijekQty;
    this.Remark = Remark;
    this.Attachment = Attachment;
}

试试这个

public Rijekdetailadapter(Context context, ArrayList<RijekdetailModel> dataModels) {
    this.context = context;
    // fix your code here
}