मेरे पास एक एपविजेट है जो ListView
का उपयोग करता है। मैं एक वर्ग है कि फैली बनाया है RemoteViewsService
:onGetViewFactory केवल एक बार कई विजेट्स के लिए बुलाया जाता है
public class AppWidgetService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
return (new AppWidgetListFactory(this.getApplicationContext(), intent));
}
}
मेरे AppWidgetProvider
, मैं विजेट के प्रत्येक उदाहरण (प्रत्येक appWidgetId
के लिए) के लिए निम्न विधि फोन:
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);
}
AppWidgetListFactory
के निर्माता
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);
}
अब समस्या यह है कि fillInList
विधि को जितनी बार विजेट के उदाहरण कहा जाता है, लेकिन onGetViewFactory
विधि केवल एक बार बुलाया जाता है। इसके परिणामस्वरूप सभी विजेट्स एक ही डेटा दिखाते हैं।
मैं इसे कैसे ठीक कर सकता हूं?
क्या आप कुछ और कोड जोड़ सकते हैं? यदि आप 'fillInList' विधि को स्थिर बनाते हैं तो यह काम करता है? – Ronnie
मेरे मामले में इरादा .putExtra काम करता है। प्रत्येक उदाहरण मुझे सही आवश्यक विजेट आईडी मिलती है। –