ListView
'u kullanan bir appwidget sahibim. Ben genişleten bir sınıf oluşturduk RemoteViewsService
:onGetViewFactory sadece birden fazla widget için bir kez çağrıldı
public class AppWidgetService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
return (new AppWidgetListFactory(this.getApplicationContext(), intent));
}
}
benim AppWidgetProvider
, ben (her appWidgetId
için) widget her örneği için aşağıdaki yöntemini çağırır: AppWidgetListFactory
ait
private static void fillInList(RemoteViews widget, Context context, int appWidgetId) {
Intent intent = new Intent(context, AppWidgetService.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
widget.setRemoteAdapter(R.id.appwidget_listview, intent);
}
yapıcı
public AppWidgetListFactory(Context context, Intent intent) {
this.context = context;
appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
System.out.println("New TVAPWLF for: " + appWidgetId);
trains = WidgetData.getInstance().widgetMap.get(appWidgetId);
}
Şimdi sorun şu ki, bu fillInList
yöntemi, widget'ın örnekleri olduğu kadar sık çağrılır, ancak onGetViewFactory
yöntemi yalnızca bir kez çağrılır. Bu, aynı verileri gösteren tüm widget'larla sonuçlanır.
Bunu nasıl düzeltebilirim?
: Alıcı tarafında
ve sırasıyla Biraz daha kod ekleyebilir misin? "fillInList" yöntemini statik yapmazsanız çalışır mı? – Ronnie
Benim durumumda intent.putExtra işe yarıyor. Her bir örnek doğru gerekli widget id almak. –