【发布时间】:2018-04-21 16:15:34
【问题描述】:
我正在使用this 3rd 方库来搜索微调器。每件事都很好,但问题是当我将适配器设置为微调器时,所以在下拉列表中我得到的是对象引用而不是字符串。 Web 服务使用改造库填充的数组列表。
以下是我的活动:
countriesCustomAdapterInr = new CountriesCustomAdapterInr(getActivity(), R.layout.custom_spinner_items, arrayList,res);
spinner.setAdapter(countriesCustomAdapterInr);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(getActivity(), ""+arrayList.get(i).getFull_name()+i, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
这是我的模型类:
public class CurrencyConverter {
@SerializedName("short_name")
private String short_name;
@SerializedName("full_name")
private String full_name;
@SerializedName("flag")
private String flag;
public CurrencyConverter(String short_name, String full_name, String flag) {
this.short_name = short_name;
this.full_name = full_name;
this.flag = flag;
}
public CurrencyConverter() {}
public String getShort_name() {
return short_name;
}
public void setShort_name(String short_name) {
this.short_name = short_name;
}
public String getFull_name() {
return full_name;
}
public void setFull_name(String full_name) {
this.full_name = full_name;
}
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
}
我的适配器:
public class CountriesCustomAdapterInr extends ArrayAdapter<String> {
private ArrayList data;
public Resources res;
private LayoutInflater inflater;
public CountriesCustomAdapterInr(
FragmentActivity activitySpinner,
int textViewResourceId,
ArrayList objects,
Resources resLocal)
{
super(activitySpinner, textViewResourceId, objects);
data = objects;
res = resLocal;
inflater = (LayoutInflater) activitySpinner.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getDropDownView(int position, View convertView, @NonNull ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
@NonNull
@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
private View getCustomView(int position, View convertView, ViewGroup parent) {
View row = inflater.inflate(R.layout.custom_spinner_items, parent, false);
CurrencyConverter tempValues = null;
tempValues = (CurrencyConverter) data.get(position);
TextView label = (TextView)row.findViewById(R.id.textView_short_name);
TextView sub = (TextView)row.findViewById(R.id.textView_full_name);
ImageView flag = (ImageView)row.findViewById(R.id.imageView_flag);
TextView line = (TextView)row.findViewById(R.id.row);
if(position==0){
label.setText("INR");
sub.setText("India");
flag.setImageResource(R.drawable.ind);
line.setVisibility(View.GONE);
}
else
{
// Set values for spinner each row
label.setText(tempValues.getShort_name());
sub.setText(tempValues.getFull_name());
Picasso.with(getContext()).load("http://currencyconvertor.ccube9projects.com/uploads/country_flag/"+ tempValues.getFlag()).into(flag);
}
return row;
}
我还附上了图片以进行更多说明。请问有人可以帮忙吗?我浪费了我的 2 天,但我没有得到任何答案。请帮忙。
【问题讨论】:
标签: android arraylist android-arrayadapter android-spinner onitemselectedlistener