Beispiel für benutzerdefinierte setDropDownViewResource Spinner Element

Ich möchte zwei Werte in einer Dropdown-Ansicht meines Spinners anzeigen.

Derzeit hat es nur einen Stadtnamen, aber ich möchte auch ein kleines Distanzfeld hinzufügen.

  • HorizontalScrollView innerhalb von SwipeRefreshLayout
  • Chrom ARC-Welder Javascript Konsol Plugin nicht definiert
  • Wie bekomme ich Wi-Fi Mac-Adresse in Android Marshmallow
  • Android N nicht kompilieren in App-Abrechnung AIDL
  • Blur oder dunkler Hintergrund, wenn Android PopupWindow aktiv ist
  • Element muss als Fehler für Tag-Form deklariert werden
  • MyCity<MyCityDistance> dataAdapter; dataAdapter = new MyCity(this, R.layout.mycityrow, list); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    Ich habe alle den Code für benutzerdefinierte Datenadapter, meine Ansicht und Inhaber etc.

    Allerdings zeigt das Element, das Show zeigt, nicht die Stadt und ihre Entfernung von meinem aktuellen Standort.

    Es zeigt nur, was in der toString () -Methode der MyCityDistance-Klasse überschrieben wird.

    Ich habe sogar versucht, Einstellung

    dataAdapter.setDropDownViewResource(R.layout.mycityrow);

    Aber kein Erfolg. Es wirft einen Fehler.

     04-02 11:05:22.600: E/AndroidRuntime(367): java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView 04-02 11:05:22.600: E/AndroidRuntime(367): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:347) 04-02 11:05:22.600: E/AndroidRuntime(367): at android.widget.ArrayAdapter.getDropDownView(ArrayAdapter.java:376) 04-02 11:05:22.600: E/AndroidRuntime(367): at android.widget.Spinner$DropDownAdapter.getDropDownView(Spinner.java:332) 

    Was ist ein gutes Beispiel für die Erstellung Ihrer eigenen benutzerdefinierten setDropDownViewResource() ?

    Auch wenn ich die setDropDownViewResource() Zeile kommentiere, setDropDownViewResource() ich den gleichen Fehler.

    Anmerkung: Der einzige Effekt mycityrow Strom ist, dass das erste Element von Spinner ist Show wie pro das Layout von mycityrow . Allerdings, wenn ich auf die Dropdown-Taste klicken, ist das Layout verloren. Ich möchte das gleiche Layout auch bei der Dropdown-Auswahl.

  • Material Design Stepper Kontrolle
  • Android Zwischenablage Rundfunkempfänger
  • Wie man eine Methode in Aktivität von einem Dienst aufruft
  • Android - Hashtag in TextView
  • Android: Duplicate Klasse Fehler in Proguard
  • Marquee Text in Android
  • 2 Solutions collect form web for “Beispiel für benutzerdefinierte setDropDownViewResource Spinner Element”

    Beachten Sie das folgende Beispiel verwendet die eingebaute android.R.layout.simple_list_item_2 , Leider ist die android.R.layout.simple_list_item_2 wahrscheinlich die gleiche wie der Hintergrund. Sie können dies einfach lösen, indem Sie Ihre eigene benutzerdefinierte Ansicht erstellen und es im Adapter verwenden.

    Lassen Sie mich wissen, ob ich irgendeinen Teil davon erklären sollte.

     public class MainActivity extends Activity { class City { public City(String city, int d) { this.city = city; this.distance = String.valueOf(d); } String city; String distance; } class CityAdapter extends ArrayAdapter<City> { public CityAdapter(Context context, List<City> objects) { super(context, android.R.layout.simple_list_item_2, objects); } @Override //don't override if you don't want the default spinner to be a two line view public View getView(int position, View convertView, ViewGroup parent) { return initView(position, convertView); } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { return initView(position, convertView); } private View initView(int position, View convertView) { if(convertView == null) convertView = View.inflate(getContext(), android.R.layout.simple_list_item_2, null); TextView tvText1 = (TextView)convertView.findViewById(android.R.id.text1); TextView tvText2 = (TextView)convertView.findViewById(android.R.id.text2); tvText1.setText(getItem(position).city); tvText2.setText(getItem(position).distance); return convertView; } } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Spinner spinner = (Spinner)findViewById(R.id.spinner1); List<City> list = new ArrayList<MainActivity.City>(); for(int i = 0; i < 10; i++) list.add(new City(String.format("City %d", i + 1), (i + 1) * 1000)); spinner.setAdapter(new CityAdapter(this, list)); } } 

    Versuchen Sie, die Zeile dataAdapter.setDropDownViewResource () zu kommentieren, und der Adapter wird versuchen, die mycityow-Layoutdatei für das Dropdown zu verwenden. Arbeiten in einfachen Fällen.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.