如何解决Spinner Itemselected Listner 在使用自定义 Adpater 时不会触发来自 api Json 的数据
如果我传递条目列表,我坚持使用微调器它工作正常,但是当我将数据传递给 Json 中的自定义适配器(从 Api 获取)时,我的第一个选定项目没有显示在微调器中,但我可以在下拉菜单中看到我的列表和在任何项目选择 itemSelectedListner 不会触发。我已经挖掘了堆栈溢出,但无法找到任何有用的答案。这是我的代码。
自定义适配器
package com.evantagesoft.warehouse.management.sys.adapter;
import android.annotation.SuppressLint; import android.app.Activity;
import android.content.Context; import android.view.LayoutInflater;
import android.view.View; import android.view.ViewGroup;
import android.widget.ArrayAdapter; import android.widget.TextView;
import com.evantagesoft.warehouse.management.sys.R;
import com.evantagesoft.warehouse.management.sys.model.entities.uomAPIs.UoM_List;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList; import java.util.List;
public class CustomSpinnerAdapter_UoM extends ArrayAdapter<Object> {
private Context context;
private ArrayList<? extends Object> arrayList;
private String tag;
public CustomSpinnerAdapter_UoM(Activity context,int resourceId,int textView,String tag,ArrayList<? extends Object> arrayList) {
super(context,resourceId,textView,(List<Object>) arrayList);
this.context = context;
this.tag = tag;
this.arrayList = arrayList;
}
@Override
public View getView(final int position,View convertView,ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
convertView = inflater.inflate(R.layout.spinner_item_acc_link_open_view,null);
}
/*LayoutInflater inflater = ((Activity) context).getLayoutInflater();
convertView = inflater.inflate(R.layout.spinner_item_view_w,null);
*/
Object item = getItem(position);
TextView mBankNameTv;
mBankNameTv = (TextView) convertView.findViewById(R.id.tv_bank_name);
assert item != null;
mBankNameTv.setText(((UoM_List) item).getName());
return convertView;
}
@Override
public View getDropDownView(final int position,null);
}
Object item = getItem(position);
TextView mBankNameTv;
mBankNameTv = (TextView) convertView.findViewById(R.id.tv_bank_name);
//mBankNameTv.setBackgroundColor(getContext().getResources().getColor(R.color.colorAppWhite));
assert item != null;
mBankNameTv.setText(((UoM_List) item).getName());
return convertView;
} }
在这里我将我的适配器设置为视图支架中的微调
CustomSpinnerAdapter_UoM spinnerAdapter = new CustomSpinnerAdapter_UoM((Activity) context,R.layout.spinner_item_acc_link_open_view,R.id.tv_bank_name,PACKAGING_TYPES,presenter.getUoM_List(1));
mPack_sp.setAdapter(spinnerAdapter);
CustomSpinnerAdapter_UoM spinnerAdapter1 = new CustomSpinnerAdapter_UoM((Activity) context,UNIT_OF_MASS,presenter.getUoM_List(3));
mU_Mass_sp.setAdapter(spinnerAdapter1);
CustomSpinnerAdapter_UoM spinnerAdapter2 = new CustomSpinnerAdapter_UoM((Activity) context,UNIT_OF_DISTANCE,presenter.getUoM_List(2));
mU_Dist_sp.setAdapter(spinnerAdapter2);
此处选择收听者
mPack_sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView,View view,int i,long l) {
//if(mPack_sp.getSelectedItemPosition()!=0)
presenter.spinnerItemSelected("packType",((UoM_List)mPack_sp.getSelectedItem()).getCode(),getAdapterPosition());
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
mU_Mass_sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView,long l) {
//if(mU_Mass_sp.getSelectedItemPosition()!=0)
presenter.spinnerItemSelected("weightUOM",((UoM_List)mU_Mass_sp.getSelectedItem()).getCode(),getAdapterPosition());
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
mU_Dist_sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView,long l) {
//if(mU_Dist_sp.getSelectedItemPosition()!=0)
presenter.spinnerItemSelected("dimensionUOM",((UoM_List)mU_Dist_sp.getSelectedItem()).getCode(),getAdapterPosition());
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
这里是模型类
package com.evantagesoft.warehouse.management.sys.model.entities.uomAPIs;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
public class UoM_List implements Serializable {
@SerializedName("code")
private String code;
@SerializedName("height")
private int height;
@SerializedName("isActive")
private boolean isActive;
@SerializedName("isDimension")
private boolean isDimension;
@SerializedName("isPacking")
private boolean isPacking;
@SerializedName("isUnit")
private boolean isUnit;
@SerializedName("isWeight")
private boolean isWeight;
@SerializedName("length")
private int length;
@SerializedName("name")
private String name;
@SerializedName("packingMaxWeight")
private int packingMaxWeight;
@SerializedName("sizeUom")
private String sizeUom;
@SerializedName("weightUom")
private String weightUom;
@SerializedName("width")
private int width;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public boolean isActive() {
return isActive;
}
public void setActive(boolean active) {
isActive = active;
}
public boolean isDimension() {
return isDimension;
}
public void setDimension(boolean dimension) {
isDimension = dimension;
}
public boolean isPacking() {
return isPacking;
}
public void setPacking(boolean packing) {
isPacking = packing;
}
public boolean isUnit() {
return isUnit;
}
public void setUnit(boolean unit) {
isUnit = unit;
}
public boolean isWeight() {
return isWeight;
}
public void setWeight(boolean weight) {
isWeight = weight;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPackingMaxWeight() {
return packingMaxWeight;
}
public void setPackingMaxWeight(int packingMaxWeight) {
this.packingMaxWeight = packingMaxWeight;
}
public String getSizeUom() {
return sizeUom;
}
public void setSizeUom(String sizeUom) {
this.sizeUom = sizeUom;
}
public String getWeightUom() {
return weightUom;
}
public void setWeightUom(String weightUom) {
this.weightUom = weightUom;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。