values style item android spinner

style - java android spinner



¿Cómo puedo usar onItemSelected en Android? (7)

Joseph: spinner.setOnItemSelectedListener(this) debe estar debajo de Spinner firstSpinner = (Spinner) findViewById(R.id.spinner1); en onCreate

package org.example.mbtiapplication; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; public class MBTITest extends Activity implements OnItemSelectedListener { private Spinner firstSpinner; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mbtitest); Spinner firstSpinner = (Spinner) findViewById(R.id.spinner1); // Create an ArrayAdapter using the string array and a default spinner layout ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.spinnerarraybool, android.R.layout.simple_spinner_item); // Specify the layout to use when the list of choices appears adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // Apply the adapter to the spinner firstSpinner.setAdapter(adapter); } @Override public void onItemSelected(AdapterView<?> parent, View v, int position, long id) { // TODO Auto-generated method stub } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }

Diseño XML:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TableRow android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:layout_width="120dp" android:layout_height="match_parent" android:layout_marginLeft="5dp" android:gravity="center_vertical" android:text="I like to go out more than staying home." /> <Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </TableRow> <TableRow android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:layout_width="120dp" android:layout_height="match_parent" android:layout_marginLeft="5dp" android:gravity="center_vertical" android:textSize="10.5dp" android:text="Sensing v Intuition" /> <Spinner android:id="@+id/spinner2" android:layout_width="match_parent" android:layout_height="wrap_content" /> </TableRow> </TableLayout>

Soy un nuevo programador de Android y tengo problemas con el uso de Spinner, he probado varios tutoriales y todavía estoy confundido. Me gustaría saber cuál es mi próximo paso aquí, hasta donde sé que he configurado mi spinner en XML, en Java he identificado ese spinner, he creado un ArrayAdapter para dicho spinner y he especificado algunas opciones. No estoy seguro de si ya he poblado la ruleta o cómo maniobrar con el objeto de la ruleta. Me gustaría poder usar el objeto de giro para seleccionar una de las tres opciones y luego mantener ese valor dentro de la vista de texto dentro del giro.


Otra cosa: cuando tiene más de un control de giro en su diseño, debe implementar una selección de conmutador en el método onItemSlected () para saber en qué widget se hizo clic. Algo como esto:

@Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { switch (parent.getId()){ case R.id.sp_alarmSelection: //Do something Toast.makeText(this, "Alarm Selected: " + parent.getSelectedItem().toString(), Toast.LENGTH_SHORT).show(); break; case R.id.sp_optionSelection: //Do another thing Toast.makeText(this, "Option Selected: " + parent.getSelectedItem().toString(), Toast.LENGTH_SHORT).show(); break; } }


Para Kotlin y enlaces el código es:

binding.spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{ override fun onNothingSelected(parent: AdapterView<*>?) { } override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { } }


Si no desea implementar el oyente, puede configurarlo de esta forma directamente donde lo desee (llame a su control giratorio una vez que se haya configurado su adaptador):

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { switch (position) { case 0: Toast.makeText(parent.getContext(), "Spinner item 1!", Toast.LENGTH_SHORT).show(); break; case 1: Toast.makeText(parent.getContext(), "Spinner item 2!", Toast.LENGTH_SHORT).show(); break; case 2: Toast.makeText(parent.getContext(), "Spinner item 3!", Toast.LENGTH_SHORT).show(); break; } } @Override public void onNothingSelected(AdapterView<?> parent) { // sometimes you need nothing here } });


Ya casi estás ahí. Como puede ver, onItemSelected le dará un parámetro de position , puede usar esto para recuperar el objeto de su adaptador, como en getItemAtPosition(position) .

Ejemplo:

spinner.setOnItemSelectedListener(this); ... public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) { Toast.makeText(parent.getContext(), "OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show(); }

Esto pondrá un mensaje en la pantalla, con el elemento seleccionado impreso por su método toString ().


Creo que esto te beneficiará Prueba esto que estoy usando para cambiar el idioma en mi aplicación

String[] districts; Spinner sp;

......

sp = (Spinner) findViewById(R.id.sp); districts = getResources().getStringArray(R.array.lang_array); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,districts); sp.setAdapter(adapter); sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long arg3) { // TODO Auto-generated method stub int index = arg0.getSelectedItemPosition(); Toast.makeText(getBaseContext(), "You select "+districts[index]+" id "+position, Toast.LENGTH_LONG).show(); switch(position){ case 0: setLocal("fr"); //recreate(); break; case 1: setLocal("ar"); //recreate(); break; case 2: setLocal("en"); //recreate(); break; default: //For all other cases, do this setLocal("en"); //recreate(); break; } } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } });

y esta es mi cadena de cuerdas

<string-array name="lang_array"> <item>french</item> <item>arabic</item> <item>english</item> </string-array>


spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //check if spinner2 has a selected item and show the value in edittext } @Override public void onNothingSelected(AdapterView<?> parent) { // sometimes you need nothing here } }); spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //check if spinner1 has a selected item and show the value in edittext } @Override public void onNothingSelected(AdapterView<?> parent) { // sometimes you need nothing here } });