Home Menu

Menu



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


 
Herramientas
  #1  
Viejo 30/12/17, 12:19:46
Avatar de Merche300
Merche300 Merche300 no está en línea
Betatester oficial
Mensajes: 625
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Versión de ROM: Cata
Versión de Radio: Radio Macuto
Tu operador: Pepephone
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
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.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 31/12/17, 10:39:09
Avatar de Merche300
Merche300 Merche300 no está en línea
Betatester oficial
Mensajes: 625
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Versión de ROM: Cata
Versión de Radio: Radio Macuto
Tu operador: Pepephone
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
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]

Ú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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 14:06:48 (GMT +1)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007