Tôi có appwidget sử dụng ListView
. Tôi đã tạo ra một lớp mà kéo dài RemoteViewsService
:onGetViewFactory chỉ được gọi một lần cho nhiều tiện ích
public class AppWidgetService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
return (new AppWidgetListFactory(this.getApplicationContext(), intent));
}
}
Trong tôi AppWidgetProvider
, tôi gọi là phương pháp sau đây cho mỗi trường hợp của các widget (đối với từng 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);
}
Các constructor của 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);
}
Bây giờ vấn đề là,Phương thức 210 được gọi thường xuyên như có các trường hợp của tiện ích, nhưng phương thức onGetViewFactory
chỉ được gọi một lần. Điều này dẫn đến tất cả các tiện ích hiển thị cùng một dữ liệu.
Làm cách nào để khắc phục sự cố này?
bạn có thể thêm một số mã nữa không? nó làm việc nếu bạn làm cho phương thức 'fillInList' không tĩnh? – Ronnie
Trong trường hợp của tôi intent.putExtra không hoạt động. Mỗi trường hợp tôi nhận được id tiện ích cần thiết chính xác. –