大佬教程收集整理的这篇文章主要介绍了android – Listivew Widget不会自动更新,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的朋友已完成一个应用程序,现在他为他的应用程序创建了一个小部件,可用于以列表视图方式显示任务列表.首先,当他拖动窗口小部件并安装在主屏幕时,它将正常工作,并以列表视图方式显示任务.
他的问题是,当他对他的应用程序进行更改然后回到他的主屏幕时,没有反映出任何变化.他正在使用onReceive()方法来更新小部件
import android.app.pendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.appwidgetprovider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.net.Uri;
import android.util.Log;
import android.widget.RemoteViews;
public class WidgetTaskschedular extends appwidgetprovider {
private final String TAG = "CalendarViewSample:"
+ this.getClass().getName();
SharedPreferences sharedprefer;
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if(intent.getAction().equals("update_widget"))
{
int[] appid=new int[1];
sharedprefer=context.getSharedPreferences("TaskWidget", 0);
appid[0]=sharedprefer.geTint("widget_key",0);
Log.i(tag,"Appwidgetid"+appid[0]);
onupdate(context, AppWidgetManager.geTinstance(context),appid);
}
}
public static String EXTRA_WORD=
"com.capsone.tesTing.calendar.WORD";
@SuppressWarnings("deprecation")
@Override
public void onupdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
super.onupdate(context, appWidgetManager, appWidgetIds);
for (int i=0; i<appWidgetIds.length; i++) {
sharedprefer=context.getSharedPreferences("TaskWidget", 0);
SharedPreferences.Editor editor=sharedprefer.edit();
editor.puTint("widget_key", appWidgetIds[i]);
editor.commit();
int a= sharedprefer.geTint("widget_key", 0);
Log.i(tag,"Sharedpreferencewidgetid:"+a);
//ID=appWidgetIds[i];
Log.i(tag,"LengthofWidget:"+appWidgetIds.length);
// Log.i(tag,"TestAppWidget:"+ID);
Intent intentWidgetservice=new Intent(context, Widgetservice.class);
intentWidgetservice.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
intentWidgetservice.setData(Uri.parse(intentWidgetservice.toUri(Intent.URi_iNTENT_scheR_870_11845@E)));
RemoteViews remoteView=new RemoteViews(context.getPackagename(),
R.layout.widgetlayout);
remoteView.setRemoteAdapter(appWidgetIds[i], R.id.listWidget,
intentWidgetservicE);
Intent clickIntent=new Intent(context, ActionBarActivity.class);
PendingIntent clickPendingIntent=PendingIntent
.getActivity(context, 0,
clickIntent,
PendingIntent.FLAG_updatE_CURRENT);
remoteView.setPendingIntentTemplate(R.id.listWidget, clickPendingIntent);
ComponentName component=new ComponentName(context,WidgetTaskschedular.class);
appWidgetManager.updateAppWidget(component, remoteView);
}
}
}
解决方法:
我建议你试试下面粘贴的代码:
ComponentName component=new ComponentName(context,WidgetTaskschedular.class);
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.listWidget);
appWidgetManager.updateAppWidget(component, remoteView);
notifyAppWidgetViewDataChanged()—>通知所有指定的AppWidget实例中的指定集合视图,使其当前数据无效.
因此,当您调用notifyAppWidgetViewDataChanged()时,将调用RemoteViewsFactory的onDataSetChanged()方法,该方法用作ListView的适配器.您可以执行Web服务/网络相关操作,数据获取操作以及onDataSetChanged()中的其他操作,获取响应并将其添加到您的数据集(可能是ArrayList或任何此类集合).
你可以参考Using App Widgets with Collections
以上是大佬教程为你收集整理的android – Listivew Widget不会自动更新全部内容,希望文章能够帮你解决android – Listivew Widget不会自动更新所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。