PDA

Ver la Versión Completa : Http Request en Widget


pablogarcia013
07/05/15, 16:12:38
Buenas a todos!

Tengo ya la app desarrollada y me he puesto a hacer un widget.
Tengo un Web service que le da datos a la app y necesito ahora que esos datos se muestren en el widget, pero no lo consigo. Solo quiero coger un campo de texto y ponerlo en un TextView.

El tema es que hago el http request desde un AsynTask y todo genial, pero a la hora de actualizar el TextView donde ira el texto que cojo del webservice estoy un poco perdido.

Lo intente hacer igual que dentro de la app pero creo que no se puede hacer desde el método runnable de runOnUiThread.

¿Me podéis echar un cable?

Muchas gracias de antemano.

rafaxplayer
08/05/15, 16:40:34
Haber... si usas un asynktask y este esta en la clase donde se encuentra el texview no hay problema.

Primero desde doinbackground haces la petición http request, al final de este metodo retornas el response de tu peticion o el string que necesitas, el cual se convierte directamente en el parámetro de OnPostexecute y hay es donde puedes editar el texview con el string en cuestión , no se si me he explicado bien , lee la ayuda de asynktask y lo veras mas claro , piensa que doinbackground se ejecuta de forma asincrónica fuera del hilo principal por lo que no tienes acceso ni ha views ni nada , pero después OnPostexecute ya se ejecuta en el principal y tienes acceso a tu textview.

kriogeN
08/05/15, 20:59:51
Supongo que a estas alturas ya sabrás que los Widget se programan mediante RemoteViews, y que una vez actualizado el contenido tienes que decirle al AppWidgetManager que refresque el Widget.

pablogarcia013
13/05/15, 10:28:36
AppWidgetManager que refresque el Widget.

No se muy bien como programar los widget puesto que es el primero que voy a desarrollar..

kriogeN
13/05/15, 11:44:50
No se muy bien como programar los widget puesto que es el primero que voy a desarrollar..

Pues los Widget no tienen nada que ver con la programación de Activity, para empezar funcionan con RemoteView, y no todas las View de Android son compatibles con RemoteView, y las subclases de una View compatible con RemoteView NO ES una RemoteView.

Por ejemplo, un TextView es una RemoteView y puedes usarlo en un Widget, pero si haces una subclase de TextView a la que llamas TextViewConFondoGris NO puedes usarlo en un Widget.

Otra cosa de los Widget es lo que te comentaba antes, que por actualizar un contenido en la RemoteView no significa que vaya a cambiar, después de actualizarlo tienes que decirle al AppWidgetManager que quieres que refresque tu Widget.

Te aconsejo este tutorial, fue el que seguí yo para hacer mi primer Widget:

http://www.vogella.com/tutorials/AndroidWidgets/article.html

pablogarcia013
20/05/15, 14:12:28
Ya lo he terminado pero no se si está hecho correctamente. dentro del doInBackground es donde el AppWidgetManager refresca la vista..¿Puede ser una opción valida?

Muchas gracias.

kriogeN
20/05/15, 14:15:28
Ya lo he terminado pero no se si está hecho correctamente. dentro del doInBackground es donde el AppWidgetManager refresca la vista..¿Puede ser una opción valida?

Muchas gracias.

Supongo que puede funcionar, todo es probarlo.

Aunque los Widget normalmente se actualizan con temporizadores (se configura en el XML del appwidget-provider) o mediante un servicio.