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


Android: Rellenar Spinner del código Java mediante programación

¿Cómo se puede llenar una ruleta de código java mediante programación?

Tengo un hilandero en el diseño como este:

<Spinner android:id="@+id/consultation_deseases" android:layout_width="@dimen/bigSpinnerWidth" android:layout_height="@dimen/bigSpinnerHeight" android:prompt="@string/disease_prompt" /> 

Con código java necesito crear el adaptador y agregar los elementos.

  • ¿Cómo establecer el valor por defecto de Spinner como nulo?
  • Texto negro sobre fondo oscuro en turrón (android.R.layout.simple_spinner_item)
  • Cómo cambiar la altura de la lista desplegable en la ruleta
  • ¿Cómo prevenir los incendios onNavigationItemSelected cuando se inicia la actividad?
  • ¿Cómo actualizar dinámicamente un spinner?
  • Cambiar el color del texto del elemento seleccionado en la ruleta
  • Cambiar el estilo del hilandero en la barra de herramientas
  • Prueba de centrifugadoras dinámicas espresso
  • 2 Solutions collect form web for “Android: Rellenar Spinner del código Java mediante programación”

     // you need to have a list of data that you want the spinner to display List<String> spinnerArray = new ArrayList<String>(); spinnerArray.add("item1"); spinnerArray.add("item2"); ArrayAdapter<String> adapter = new ArrayAdapter<String>( this, android.R.layout.simple_spinner_item, spinnerArray); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); Spinner sItems = (Spinner) findViewById(R.id.spinner1); sItems.setAdapter(adapter); 

    También para averiguar qué se selecciona, puedes hacer algo como esto

     String selected = sItems.getSelectedItem().toString(); if (selected.equals("what ever the option was")) { } 

    He aquí un ejemplo para programar completamente:

    • Init a Spinner.
    • Llenarlo con datos a través de una lista de cadenas.
    • Cambiar el tamaño del Spinner y añadirlo a mi vista.
    • Formatee la fuente Spinner (tamaño de fuente, color, relleno).
    • Limpiar el Spinner.
    • Agregue nuevos valores al Spinner.
    • Vuelva a dibujar el Spinner.

    Estoy usando las siguientes clases vars:

     Spinner varSpinner; List<String> varSpinnerData; float varScaleX; float varScaleY; 

    A – Init y render el Spinner (varRoot es un puntero a mi actividad principal):

     public void renderSpinner() { List<String> myArraySpinner = new ArrayList<String>(); myArraySpinner.add("red"); myArraySpinner.add("green"); myArraySpinner.add("blue"); varSpinnerData = myArraySpinner; Spinner mySpinner = new Spinner(varRoot); varSpinner = mySpinner; ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(varRoot, android.R.layout.simple_spinner_item, myArraySpinner); spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down vieww mySpinner.setAdapter(spinnerArrayAdapter); 

    B – Cambiar el tamaño y agregar el hilador a mi vista:

      FrameLayout.LayoutParams myParamsLayout = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT); myParamsLayout.gravity = Gravity.NO_GRAVITY; myParamsLayout.leftMargin = (int) (100 * varScaleX); myParamsLayout.topMargin = (int) (350 * varScaleY); myParamsLayout.width = (int) (300 * varScaleX);; myParamsLayout.height = (int) (60 * varScaleY);; varLayoutECommerce_Dialogue.addView(mySpinner, myParamsLayout); 

    C – Haga clic en el controlador y utilícelo para establecer la fuente.

      mySpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int myPosition, long myID) { Log.i("renderSpinner -> ", "onItemSelected: " + myPosition + "/" + myID); ((TextView) parentView.getChildAt(0)).setTextColor(Color.GREEN); ((TextView) parentView.getChildAt(0)).setTextSize(TypedValue.COMPLEX_UNIT_PX, (int) (varScaleY * 22.0f) ); ((TextView) parentView.getChildAt(0)).setPadding(1,1,1,1); } @Override public void onNothingSelected(AdapterView<?> parentView) { // your code here } }); } 

    D – Actualice el Spinner con nuevos datos:

     private void updateInitSpinners(){ String mySelected = varSpinner.getSelectedItem().toString(); Log.i("TPRenderECommerce_Dialogue -> ", "updateInitSpinners -> mySelected: " + mySelected); varSpinnerData.clear(); varSpinnerData.add("Hello World"); varSpinnerData.add("Hello World 2"); ((BaseAdapter) varSpinner.getAdapter()).notifyDataSetChanged(); varSpinner.invalidate(); varSpinner.setSelection(1); } 

    }

    Lo que no he podido resolver en el updateInitSpinners, es hacer varSpinner.setSelection (0); Y hacer que la configuración de fuente personalizada se active automáticamente.

    ACTUALIZAR:

    Esta solución "fea" resuelve el varSpinner.setSelection (0); Cuestión, pero no estoy muy contento con él:

     private void updateInitSpinners(){ String mySelected = varSpinner.getSelectedItem().toString(); Log.i("TPRenderECommerce_Dialogue -> ", "updateInitSpinners -> mySelected: " + mySelected); varSpinnerData.clear(); ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(varRoot, android.R.layout.simple_spinner_item, varSpinnerData); spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); varSpinner.setAdapter(spinnerArrayAdapter); varSpinnerData.add("Hello World"); varSpinnerData.add("Hello World 2"); ((BaseAdapter) varSpinner.getAdapter()).notifyDataSetChanged(); varSpinner.invalidate(); varSpinner.setSelection(0); } 

    }

    Espero que esto ayude……

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