参数错误 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
}
我正在尝试使用自定义适配器创建 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
}