Я использую эту стороннюю библиотеку для поискового счетчика. Все хорошо, но проблема в том, что когда я устанавливаю адаптер на счетчик, поэтому в раскрывающемся списке я получаю ссылку на объект вместо строки. Список-массив, заполненный веб-сервисами с использованием библиотеки модификации.
Ниже моя деятельность:
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 дня, но я не получил никакого ответа. Пожалуйста помоги.