compruebe si existe una vista desde un inflador de diseño antes de añadir otro
En mi proyecto de Android, estoy añadiendo dinámicamente formularios a mi diseño lineal y luego destruirlos cuando haya terminado con un botón. Sin embargo, cuando hago clic en el botón "añadir", añade infinitamente más formas, aunque sólo quiero uno a la vez. ¿Cómo puedo chec si mi linearLayout "cuentas" se ha añadido a la vista o si existe en la vista en el momento? Este es el código para agregar la vista. ¿Cómo puedo comprobar si la vista ya existe antes de agregar la vista?
public void showForm(String form){ View view; LayoutInflater inflater =(LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = inflater.inflate(R.layout.forms, null); LinearLayout item = (LinearLayout) view.findViewById(R.id.accounts); l.addView(item); }
- Manejo de la rotación de la pantalla en WebView
- API de Android 23. WebView cómo ignorar errores de JavaScript
- alerta en la vista web incorporada
- Pasar los toques a la vista bajo
- ¿Rellenar ListFragments con una vista personalizada?
- ¿Cómo puede saber cuándo se termina de cargar una actividad de Android?
- Ver onDraw (Canvas c) versus dibujar (Canvas c) en android?
- Color del enlace de Android WebView
- Listview expandible anidada en android
- Superponer una actividad en otra actividad O superponer una vista sobre otra
- Cuál es la ventaja de usar el espacio sobre la vista
- Error al inflacionar la casilla de verificación
- Vista de visualización en la parte superior de la barra de acción
Opción # 1: Usar boolean accountsAdded=false;
, estableciéndolo en true
cuando sea necesario
Opción # 2: Utilizar l.findViewById(R.id.accounts)
y ver si devuelve null
BTW, se bloqueará si el widget raíz de R.layout.forms
no es el R.id.accounts
View
, así que por favor agregar view
, no item
, a l
via addView()
.
Puede comprobar desde el método ViewGroup indexOfChild (Ver vista) si el niño existe o no. devuelve un número entero positivo que representa la posición de la vista en el grupo o -1 si la vista no existe en el grupo
ViewGroup rootLayout = (ViewGroup) getWindow().peekDecorView(); LayoutInflater li = LayoutInflater.from(this); View myView= li.inflate(R.layout.recorder, null); if(rootLayout.indexOfChild(myView) == -1) rootLayout.addView(myView);
- Android: ¿Cómo convertir mi aplicación normal de Android en Android and Launcher?
- OnCheckedChangeListener o OnClickListener con la sentencia if para CheckBox? ¿Cual es mejor?