Search code examples
androidandroid-spinner

customer spinner show meaningless texts


I want to create a customer spinner with my adapter. but my spinner shows meaningless texts.

my adapter:

public class StateAdapter extends ArrayAdapter<StateModel> {

    private final LayoutInflater layoutInflater;
    private Context mcontext;
    private Helpers helpers;
    public StateAdapter(Context context, List<StateModel> items) {
        super(context,android.R.layout.simple_spinner_dropdown_item, items);
        layoutInflater = LayoutInflater.from(context);
        this.mcontext = context;
        helpers = new Helpers();
    }

    public StateAdapter(Context context) {
        super(context, android.R.layout.simple_spinner_dropdown_item);
        layoutInflater = LayoutInflater.from(context);
        this.mcontext = context;
        helpers = new Helpers();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        StateModel item = getItem(position);
        View    v = layoutInflater.inflate( R.layout.adapters_states, parent, false);
        IranSansTextView adapter_states_title = (IranSansTextView) v.findViewById(R.id.adapter_states_title);
        adapter_states_title.setText(item.getName());
        return v;
    }

    @Override public int getViewTypeCount() {
        return 1;
    }

    @Override public int getItemViewType(int position) {
        return position % 2 == 0 ? 1 : 0;
    }

    public void appendItems(List<StateModel> newItems) {
        addAll(newItems);
        notifyDataSetChanged();
    }

    public void setItems(List<StateModel> moreItems) {
        clear();
        appendItems(moreItems);
    }

}

stateAdapter = new StateAdapter(this, helpers.getStates(this));
        activities_profile_states.setAdapter(stateAdapter);

enter image description here


Solution

  • You need to override and implement getDropDownView() in your custom Adapter. This is the method that is called to populate the spinner list.

    See How to create Spinner-list using CustomAdapter in android for more details.