Hallo ich habe Widget mit einer Listview, das Daten aus der gleichen SQLite DB holt wie meinen App,
im Widget gibt es einen RefreshButton der dann die Daten aktuell aus der DB auslesen soll, dies funktioniert irgendwie nicht weil er den den Adapter nicht nochmal neu ausliest bei updaten des Widgets, aber warum?
hier mal mein Code
AppWidgetService.class
Code
		
			public class AppWidgetService extends RemoteViewsService {
    public RemoteViewsFactory onGetViewFactory(Intent intent) {
        DBHelper db = new DBHelper(getBaseContext());
        List<Charakter> list = db.getallCharsOrderByGeb();
        return (new AppWidgetAdapter(this.getApplicationContext(), intent, list));
    }
	
	AppWidgetAdapter.class
Code
		
					
			public class AppWidgetAdapter implements RemoteViewsService.RemoteViewsFactory {
    private Context context;
    private int appWidgetId;
    private List<Charakter> charakterList;
    public AppWidgetAdapter(Context context, Intent intent, List<Charakter> list) {
        this.context = context;
        appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);
        this.charakterList = list;
    }
    @Override
    public void onCreate() {
    }
    @Override
    public void onDestroy() {
    }
    @Override
    public int getCount() {
        return charakterList.size();
    }
    @Override
    public RemoteViews getViewAt(int position) {
        RemoteViews row = new RemoteViews(context.getPackageName(), R.layout.item_list_appwidge);
        Charakter chara = charakterList.get(position);
        row.setTextViewText(R.id.txt_appwidge_name, chara.getName());
        row.setTextViewText(R.id.txt_appwidge_beschreibung, chara.getGeburtstag());
        
        return row;
    }
    @Override
    public RemoteViews getLoadingView() {
        return null;
    }
    @Override
    public int getViewTypeCount() {
        return 1;
    }
    @Override
    public long getItemId(int position) {
        return position;
    }
    @Override
    public boolean hasStableIds() {
        return true;
    }
    @Override
    public void onDataSetChanged() {
    }
}
	
			Alles anzeigen
	AppWidgetProvider.class
Code
		
					
			public class AppWidget extends AppWidgetProvider {
    public static String WIDGET_BUTTON = "de.ronny130286.gw2charviewer.WIDGET_BUTTON";
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        // There may be multiple widgets active, so update all of them
        final int N = appWidgetIds.length;
        for (int i = 0; i < N; i++) {
            updateAppWidget(context, appWidgetManager, appWidgetIds[i]);
        }
    }
    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
        if (WIDGET_BUTTON.equals(intent.getAction())) {
            AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
            int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
            updateAppWidget(context, appWidgetManager,appWidgetId);
        }
    }
    @Override
    public void onEnabled(Context context) {
        // Enter relevant functionality for when the first widget is created
    }
    @Override
    public void onDisabled(Context context) {
        // Enter relevant functionality for when the last widget is disabled
    }
    static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
                                int appWidgetId) {
        // Construct the RemoteViews object
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.app_widget);
        //views.setTextViewText(R.id.appwidget_text, widgetText);
        Intent intent = new Intent(WIDGET_BUTTON);
        intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        views.setOnClickPendingIntent(R.id.btn_appwidge_refresh, pendingIntent );
        Intent svcIntent=new Intent(context, AppWidgetService.class);
        svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
        svcIntent.setData(Uri.parse(svcIntent.toUri(Intent.URI_INTENT_SCHEME)));
        views.setRemoteAdapter(appWidgetId, R.id.appwidget_listview, svcIntent);
        // Instruct the widget manager to update the widget
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
	
			Alles anzeigen
	
Der Button funktioniert und die updateAppWidget Mehtode wird richtig aufgerufen, aber wie eingangs erwähnt holt er bei updaten nicht die aktuellen Daten aus der DB das macht er komisch weise nur wenn ich das Widget lösche und neu erstelle.