Android Kotlin: Cómo Actualizar lista de visión desde una (tercera) actividad diferente

jt_3232:

Estoy construyendo una aplicación para Android en Kotlin, que tiene un botón en la actividad de "añadir" los jugadores se abren otra actividad. En esta actividad "Añadir jugador", se puede optar por añadir manualmente un jugador, lo que nos lleva a una tercera actividad "emergente". La persona entra en la información, a continuación, agregue accesos. En ese clic, quiero crear de inmediato un nuevo objeto "jugador" y actualizar la vista de la lista de jugadores activos en la actividad principal.

He leído a utilizar el adapter.notifyDataSetChanged(), pero el problema es, no puedo encontrar una manera de obtener una referencia a ese objeto adaptador (ArrayAdapter). Si se trataba de Java, que acaba de hacer el adaptador disponible a nivel mundial, o estática pública, algo por el estilo. Sin embargo, esto es Kotlin donde todo es confuso como diablos para mí. No puedo hacer que el adaptador disponible a nivel mundial porque no puedo inicializar el adaptador porque el parámetro "contexto" que pasa a todo el mundo "esto" no funciona. No puedo realizar ninguna función de cambio a público o estática. Asimismo, no puede lateinit la variable ya sea porque Kotlin está enojado conmigo por alguna razón.

Pasé como 2 horas tratando de actualizar un ListView estúpida por mi aplicación. Está bastante desalentador cuando trato de practicar haciendo aplicaciones y quedar atrapado en pequeñas cosas como esta.

Estoy seguro de que tengo un gran malentendido, pero si alguien me podría apuntar en la dirección correcta, que sería grande!

Muchas gracias chicos,

OTROS

Kingfisher Phuoc:

No haga que su adaptador / Vista / ActivityContext variable global, de lo contrario, obtendrá un problema muy grande de memoria.

Usted debe tratar de usar Receptor de radio local . De Actividad Un adaptador que tiene, se puede registrar una Local BroadCast receiverde onCreateescuchar cualquier acción cambiando-adaptador. Aquí está el ejemplo:

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("YourAdapaterChangeAction.");

LocalBroadcastManager.getInstance(this).registerReceiver(new BroadcastReceiver() {
        @Override
        public void onReceive(final Context context, final Intent intent) {
            // check your action with if/else
            //adapter.notify....
        }
},intentFilter);

Después, sólo se puede disparar LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("YourAdapaterChangeAction"));desde cualquier actividad para actualizar el adaptador.

P / s: otra opción es utilizar startActivityForResult.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=343221&siteId=1
Recomendado
Clasificación