Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Ejemplo de un elemento spinner personalizado setDropDownViewResource

Me gustaría mostrar dos valores en una vista desplegable de mi hiladora.

Actualmente, sólo tiene un nombre de ciudad, pero también me gustaría añadir un campo de distancia pequeña a la misma.

MyCity<MyCityDistance> dataAdapter; dataAdapter = new MyCity(this, R.layout.mycityrow, list); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

Tengo todo el código para el adaptador de datos de encargo, exapanding mi opinión y el sostenedor etc.

Sin embargo, el elemento que obtiene mostrar no muestra la ciudad y su distancia de mi ubicación actual.

Sólo muestra lo que se sobreescribe en el método toString () de la clase MyCityDistance.

Incluso intenté establecer

dataAdapter.setDropDownViewResource(R.layout.mycityrow);

Pero, sin éxito. Se produce un error.

 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) 

¿Cuál es un buen ejemplo de creación de su propio setDropDownViewResource() personalizado setDropDownViewResource() ?

Incluso si comento la línea setDropDownViewResource() , obtengo el mismo error.

Nota: El único efecto mycityrow corriente es que el primer elemento de Spinner es mostrar como por el diseño de mycityrow . Sin embargo, cuando hago clic en Abrir el menú desplegable, ese diseño se pierde. Quiero el mismo diseño durante la selección desplegable también.

  • Usando HttpClient y HttpPost en Android con parámetros post
  • Imprimir el símbolo de copyright en TextView
  • Cómo almacenar Hashmap en Android para que se reutilice cuando la aplicación se reinicie con las preferencias compartidas?
  • Importar org.apache.commons en aplicaciones android
  • NavigationDrawerFragment no funciona con la barra de herramientas de AppCompat
  • ¿Cómo puedo añadir Selendroid a Android Studio para rascar web?
  • Sonar: Cómo utilizar gradle para inspeccionar un proyecto de android
  • Selector de color de Android para incluirlo en la actividad
  • 2 Solutions collect form web for “Ejemplo de un elemento spinner personalizado setDropDownViewResource”

    Tenga en cuenta que el siguiente ejemplo usa el inbuilt android.R.layout.simple_list_item_2 , Desafortunadamente el color del texto probablemente será el mismo que el fondo. Simplemente puede solucionar esto creando su propia vista personalizada y usarla en el adaptador.

    Déjeme saber si debo explicar cualquier parte de ella.

     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)); } } 

    Trate de comentar la línea dataAdapter.setDropDownViewResource () y el adaptador intentará usar el archivo de diseño mycityow para el menú desplegable. Funciona en casos simples.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.