events - launch update of listview inside appwidget when button is pressed android -
i have appwidget contains listview , buton
the listview gives data remote mysql database mysql , display it
but button want refresh listview appwidget directly , don't wait time defined in appwidgetinfo
here widgetprovider class :
public class widgetprovider extends appwidgetprovider { // string sent on broadcast data fetched // should included on widgetprovider manifest intent action // recognized widgetprovider receive broadcast public static final string data_fetched = "com.wordpress.laaptu.data_fetched"; /* * method called every 30 mins specified on widgetinfo.xml * method called on every phone reboot method nothing * updated right instead retmotefetchservice class called * service fetch data,and send broadcast widgetprovider * broadcast received widgetprovider onreceive in turn * updates widget */ @override public void onupdate(context context, appwidgetmanager appwidgetmanager, int[] appwidgetids) { final int n = appwidgetids.length; (int = 0; < n; i++) { intent serviceintent = new intent(context, remotefetchservice.class); serviceintent.putextra(appwidgetmanager.extra_appwidget_id, appwidgetids[i]); context.startservice(serviceintent); } super.onupdate(context, appwidgetmanager, appwidgetids); } private remoteviews updatewidgetlistview(context context, int appwidgetid) { // layout show on widget remoteviews remoteviews = new remoteviews(context.getpackagename(), r.layout.widget_layout); // remoteviews service needed provide adapter listview intent svcintent = new intent(context, widgetservice.class); // passing app widget id remoteviews service svcintent.putextra(appwidgetmanager.extra_appwidget_id, appwidgetid); // setting unique uri intent // don't know purpose me right svcintent.setdata(uri.parse(svcintent.touri(intent.uri_intent_scheme))); // setting adapter listview of widget remoteviews.setremoteadapter(appwidgetid, r.id.listviewwidget, svcintent); // setting empty view in case of no data remoteviews.setemptyview(r.id.listviewwidget, r.id.empty_view); return remoteviews; } /* * receives broadcast per action set on intent filters on * manifest.xml once data fetched remotepostservice,it sends * broadcast , widgetprovider notifies change data data change * right happens on listprovider takes remotefetchservice * listitemlist data */ @override public void onreceive(context context, intent intent) { super.onreceive(context, intent); if (intent.getaction().equals(data_fetched)) { int appwidgetid = intent.getintextra( appwidgetmanager.extra_appwidget_id, appwidgetmanager.invalid_appwidget_id); appwidgetmanager appwidgetmanager = appwidgetmanager .getinstance(context); remoteviews remoteviews = updatewidgetlistview(context, appwidgetid); appwidgetmanager.updateappwidget(appwidgetid, remoteviews); } } }
i used code-source of tutorial here
i added button in layout refresh_button id don't know how launch update of listview when user press it
how can fix issue
appwidgetmanager.notifyappwidgetviewdatachanged(appwidgetids[i], r.id.listviewwidget); add above code in appwidgetprovider.onupdate method give call ondatasetchanged() method of can refresh listview
i had same problem solved it
Comments
Post a Comment