RemoteViewsFactory will nicht

  • 2 Antworten
  • Letztes Antwortdatum
GENiALi

GENiALi

Fortgeschrittenes Mitglied
11
Hallo

Ich versuche ein Homescreen Widget zu machen das eine Liste darstellt. Ich krieg es einfach nicht zum laufen und finde den Fehler nicht.

Ich habe schon das Problem das nicht mal die WidgetListService Klasse aufgerufen wird.

Hier mal Code.

Code:
public class C2cWidget1xNRed extends AppWidgetProvider
{
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
    if (appWidgetIds != null && appWidgetIds.length > 0)
    {
        for (int widgetId : appWidgetIds)
        {
            Intent svcIntent=new Intent(context, WidgetListService.class);

            svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
            svcIntent.setData(Uri.parse(svcIntent.toUri(Intent.URI_INTENT_SCHEME)));

            RemoteViews widget=new RemoteViews(context.getPackageName(),
                                               R.layout.c2c_widget_4x_n_red);

            widget.setRemoteAdapter(widgetId, R.id.llNotification, svcIntent);

            Intent clickIntent=new Intent(context, AlarmActivity.class);
            PendingIntent clickPI=PendingIntent
                    .getActivity(context, 0,
                                 clickIntent,
                                 PendingIntent.FLAG_UPDATE_CURRENT);

            widget.setPendingIntentTemplate(R.id.llNotification, clickPI);

            appWidgetManager.updateAppWidget(widgetId, widget);
        }
    }

    super.onUpdate(context, appWidgetManager, appWidgetIds);
}
}
Service
Code:
public class WidgetListService extends RemoteViewsService
{
    @Override
    public RemoteViewsFactory onGetViewFactory(Intent intent)
    {
        return(new ListViewFactory(this.getApplicationContext(), intent));
    }
}
Factory
Code:
public ListViewFactory(Context context, Intent intent)
{
    this.context = context;
    appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);

    alarmBal = new AlarmBal(C2C.getC2c());
    alarme = alarmBal.getList();
}

@Override
public void onCreate()
{
}

@Override
public int getCount()
{
    return alarme.size();
}

@Override
public RemoteViews getViewAt(int position)
{
    Alarm alarm = alarme.get(position);

    if (alarm != null)
    {
        RemoteViews view = new RemoteViews(context.getPackageName(), R.layout.c2c_widget_4x1_red);

        view.setTextViewText(R.id.alarm_item_tvFrom, alarm.getFrom());

        view.setTextViewText(R.id.alarm_Item_tvDate, alarm.getDate().toLocaleString());

        view.setTextViewText(R.id.alarm_Item_tvMessage, alarm.getShortMessage(50));

        view.setTextViewText(R.id.alarm_Item_tvDevice, alarm.getDeviceName());

        view.setTextViewText(R.id.alarm_Item_tvType, alarm.getAlarmType());

        if (alarm.getType() == AlarmType.OutgoingSMS || alarm.getType() == AlarmType.IncommingSMS)
        {
            view.setTextViewText(R.id.alarm_Item_tvDuration, String.valueOf(alarm.getDuration()) + " " + context.getText(R.string.alarm_length));
        }
        else
        {
            view.setTextViewText(R.id.alarm_Item_tvDuration, Tools.getElapsedTimeHoursMinutesSecondsString(context, alarm.getDuration()));
        }

        return view;
    }

    return null;
}

@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;
}
 
Ist schon älter der Thread, ist das Problem noch aktuell?
 
Nicht wirklich. Kann mich nicht mal mehr wirklich dran erinnern.
 
Zurück
Oben Unten