Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 30/12/17, 12:19:46
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
Variables con Kotlin

Bueno no se sera el hilo correspondiente para kotlin, pero al no ver ninguno lo pregunto aqui.
Estoy intentando completar una url por medio de variables que obtengo con este codigo:

Código:
class Detalles : AppCompatActivity() {
var actaPartidoList: ArrayList<ActaPartido>? = ArrayList()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.cabecera_detalles)

val jornada = intent.getStringExtra("jornada")
collapsing_toolbar.setTitle(jornada)

collapsing_toolbar.setExpandedTitleColor(Color.WHITE)
collapsing_toolbar.setCollapsedTitleTextColor(Color.WHITE)

var idLocal = intent.getStringExtra("idLocal")
val idVisitante = intent.getStringExtra("idVisitante")
val codInfo = intent.getStringExtra("codInfo")
    }

interface ApiActaPartido { @get("server.php?action=getActa&tmp=2017/2018&jor=11&cmp=48&idl=0201113211&idv=0204061161&id=2127995"+$codInfo)
fun getActaPartido(): Call<ActaPartidoList>
    }

override fun onStart() {
super.onStart()

recycler_detalles.layoutManager = GridLayoutManager(applicationContext, 1)

val apiActaPartido: ApiActaPartido= RetrofitClient().getApiActaPartido()
val call: Call<ActaPartidoList> = apiActaPartido.getActaPartido()

call.enqueue(object : Callback<ActaPartidoList> {
override fun onResponse(call: Call<ActaPartidoList>, response: Response<ActaPartidoList>) {
actaPartidoList = response.body()!!.getActaPartido()

val adapter = ActaPartidoAdapter(applicationContext, actaPartidoList!!)
recycler_detalles.adapter = adapter

//progressBar.setVisibility(View.VISIBLE)
}

override fun onFailure(call: Call<ActaPartidoList>, t: Throwable) {
Toast.makeText(applicationContext, "Detalles tiene un error de respuesta", Toast.LENGTH_LONG).show()
            }
        })
    }
}


En el adapter

Código:
@SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: ViewHolder, position: Int ) {
val calendario = calendarioList[position]

holder!!.itemView.setOnClickListener {

val intent = Intent(context, Detalles::class.java)

intent.putExtra("jornada", "Jornada: " + calendario.jornada)
intent.putExtra("idLocal", "Id Local: " + calendario.idLocal)
intent.putExtra("idVisitante", "Id Visi: " + calendario.idVisitante)
intent.putExtra("codInfo", "Cod Info: " + calendario.codInfo)
        }
        context.startActivity(intent)
}
$codInfo esta subrrayado en rojo, el error:
Error91, 111) Expecting an element

Que solucion tiene este error? o dicho de otra manera, ¿Como puedo llevarlas variables para completar la url?

Última edición por Merche300 Día 06/03/18 a las 14:32:10.
Responder Con Cita


  #2  
Viejo 30/12/17, 19:41:41
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,202
Tu operador: -

El código no se lee muy bien, debe haber algún problema de formato. No queda muy claro dónde está cada cosa.

En cualquier caso el error te lo da porque "const" en kotlin es para constantes que pueden conocerse en tiempo de compilación, es decir, no hace falta ejecutar el código para saber su valor. De ahí que se reduzca a tipos primitivos y String escritas en el código. En tu caso estás asignando el valor de una variable que solo se conoce cuando se ejecute el código y se llame al getStringExtra. Así que el const fuera. De hecho según está también te sobra el objeto Detalles si solo te interesa la variable que ya tienes en la actividad.

Por otro lado, para URLs con parámetros, el parámetro tiene que ir como parámetro de la función, no en la anotación. ¿Es retrofit, no? Mira los ejemplos donde hablan del {id} en http://square.github.io/retrofit Tendrás que añadir un parámetro al getActaPartido, precisamente para especificar a qué partido te refieres. Y en la anotación del get poner la URL con las llaves donde tenga que ponerse el parámetro.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 31/12/17, 10:39:09
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
 Cita: Originalmente Escrito por mocelet Ver Mensaje
El código no se lee muy bien, debe haber algún problema de formato. No queda muy claro dónde está cada cosa.

En cualquier caso el error te lo da porque "const" en kotlin es para constantes que pueden conocerse en tiempo de compilación, es decir, no hace falta ejecutar el código para saber su valor. De ahí que se reduzca a tipos primitivos y String escritas en el código. En tu caso estás asignando el valor de una variable que solo se conoce cuando se ejecute el código y se llame al getStringExtra. Así que el const fuera. De hecho según está también te sobra el objeto Detalles si solo te interesa la variable que ya tienes en la actividad.

Por otro lado, para URLs con parámetros, el parámetro tiene que ir como parámetro de la función, no en la anotación. ¿Es retrofit, no? Mira los ejemplos donde hablan del {id} en http://square.github.io/retrofit Tendrás que añadir un parámetro al getActaPartido, precisamente para especificar a qué partido te refieres. Y en la anotación del get poner la URL con las llaves donde tenga que ponerse el parámetro.
Si Retrofit. post1 editado

Última edición por Merche300 Día 31/12/17 a las 10:58:28.
Responder Con Cita
  #4  
Viejo 31/12/17, 14:36:28
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,202
Tu operador: -

Sigues con lo mismo, no puedes poner variables en la anotación del get (que además has puesto el $codInfo fuera de las comillas, pero es lo de menos).

Las variables que afecten a la URL en retrofit tienen que ir en la función como parámetro, y en la URL del get escribir dónde hay que ponerlo con llaves. Como en el ejemplo que viene en la web para el identificador de usuario:

[PHP]@GET("group/{id}/users")
Call<List<User>> groupList(@Path("id") int groupId);[/PHP]
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Última edición por mocelet Día 31/12/17 a las 14:39:11.
Responder Con Cita
Gracias de parte de:
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 19:04:18 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /