Dynamic Spinners – si se selecciona un elemento de un hilandero, ocúltalo de otros hiladores – Android
Cómo ocultar un elemento de otros hilanderos que está seleccionado actualmente en una hiladora?
He intentado quitar los artículos vía ArrayList de secuencias y de ArrayAdapters, pero he notado tan pronto como se quita de la lista, la selección ya no se referencia al artículo de la lista (porque no existe más).
- El detector de progreso de subida no se disparó (API de unidad de Google)
- Forzar a los usuarios a tener la última versión de la aplicación para Android
- Problema de conexión USB AOA
- Cola sin bloqueo de solicitudes HTTP POST con persistencia
- Android Studio No se puede resolver el símbolo 'Before' en import org.junit.Before
Ahora supongo, tengo 4 spinner que se crean dinámicamente y todos tienen el mismo ArrayList que su recurso y ahora me gustaría usar este adaptador para buscar la posición del elemento seleccionado de 1 spinner y luego ocultarlo de otros 3 spinners.
for (int i = 0; i < numberOfStops; i++) { AddStopView stopView = new AddStopView(getActivity()); stopView.setCallback(BaseBookingFragment.this); stopView.setPassengerNames(extraPassengerNames); stopViews.add(stopView); parent.addView(stopView, viewPosition); }
En el código anterior estoy creando Stop Views de forma dinámica y cada Stop View con el nombre del pasajero spinner. Y todos estos hiladores tienen la misma ArrayList que su recurso.
Pieza de código de AddStopView.java
public AddStopView(Context context) { super(context); initialize(); } public void setCallback(StopViewCallback callback) { this.callback = callback; } public void setPassengerNames(List<String> passengerNames) { this.passengerNames = passengerNames; passengerAdapter.setNames(passengerNames); } private void initialize() { inflate(getContext(), R.layout.view_stop, this); passengerAdapter = new ExtraPassengerAdapter(getContext()); passengerAdapter.setNames(passengerNames); nameSpinner.setAdapter(passengerAdapter); nameSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { if (view == null) { return; } passengerName = (String) view.getTag(); if (position != 0) callback.updatePassengerList(AddStopView.this, (position - 1)); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); }
Código de devolución de llamada de nameSpinner.setOnItemSelectedListener
@Override public void updatePassengerList(AddStopView addStopView, int position) { for (String passName : extraPassengerNames) { if (addStopView.getPassengerName().equals(passName)) { extraPassengerNames.remove(passName); break; } } for (AddStopView stopView : stopViews) { if (!stopView.equals(addStopView)) stopView.setPassengerNames(extraPassengerNames); } }
Código de ExtraPassengerAdapter.java
public class ExtraPassengerAdapter extends BaseAdapter { private List<String> names = new ArrayList<>(); private Context context; public ExtraPassengerAdapter(Context context) { this.context = context; names.add(get0Position()); } public void setNames(List<String> names) { this.names.clear(); this.names.add(get0Position()); this.names.addAll(names); notifyDataSetChanged(); } @Override public int getCount() { return names.size(); } @Override public String getItem(int position) { return names.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView textView = (TextView) LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_stop, parent, false); String name = getItem(position); textView.setText(name); textView.setTag(name); return textView; } private String get0Position() { return context.getString(R.string.passenger_name); }
}
- Deshabilitar todos los efectos de sonido (claves de hardware también) en Android
- Android Handler para la tarea repetida - se superpone? Temporizador-tarea VS manejador VS alarma-administrador
- Maven se niega a descargar una dependencia empacada desde un repositorio remoto
- ¿Cómo puedo convertir String a ArrayList <String>
- ¿Cómo generar un código QR para una aplicación de Android?
- CircleCI Android No soportado major.minor versión 52.0
- Android - Cómo combinar dos ArrayLists
- La aplicación se bloquea al agregar un ImageView
Creo que la manera correcta de resolver su problema es crear una lista con todas las opciones posibles y 4 listas con 4 adaptadores para cada hilandero. Cuando se selecciona algo, actualiza cada lista de acuerdo con la lógica descrita y llama a adapter.notifyDataSetChanged()
para cada adaptador.
- Maximizar el tamaño del texto del botón de Android
- ¿Cómo actualizar manualmente el navegador android con el último webkit (nocturno)?