this 검색 가능한 회 전자 용 타사 라이브러리를 사용하고 있습니다. 모든 것은 훌륭하지만 문제는 내가 스피너에 어댑터를 설정할 때 드롭 다운에서 문자열 대신 객체 참조를 얻는다는 것입니다. 갱신 목록 라이브러리를 사용하여 웹 서비스로 채워진 배열 목록.타사 API를 사용하여 어댑터를 스피너로 설정하십시오.
다음은 내 활동 :
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 일을 낭비했다. 그러나 나는 조금의 대답도 얻지 않았다. 도와주세요.
실제로 toString()을 사용할 수 없으므로 사용자 지정 항목 목록에 2 개의 텍스트와 1 개의 이미지가 있습니다. 텍스트가 하나 뿐인 경우 toString()을 사용할 수 있지만 사용할 수없는 디자인을 사용자 정의 할 수 있습니다. 다른 해결책? –
toString()은 검색 필터를 작동시키기위한 것입니다. 라이브러리의 SearchableListDialog를 변경하면 원하는 사용자 정의 어댑터가 제공됩니다. –
나는 당신이 무엇을 요구하고 있는지 모른다. 위의 코드는 작동하며 원하는 것을 생성합니다. –