2014-11-06 4 views
1

Итак, я пишу приложение для Android, которое управляет коллекциями активов. Я пытаюсь написать AppWiget таким образом, что виджет содержит два списка ListView, один из которых представляет список коллекций и один представляет активы в текущем выбранном списке. Я создал AppWidgetProvider и два RemoteViewsService/RemoteViewServicesFactory, по одному для каждого ListView.Android AppWidget - Общение между двумя списками ListViews

Когда щелкнули коллекции ListView, он создает Bundle и передает collection_id обратно поставщику. Теперь на этом этапе мне нужно вызвать notifyAppWidgetViewDataChanged в активном элементе ListView, чтобы сообщить ему об обновлении, но я также хотел бы передать этот файл collection_id, чтобы он знал, какие данные извлекать (из локального mySql db).

Есть ли механизм, который позволяет это? Единственное, что я могу придумать или найти, это сохранить текущий файл коллекции в базе данных или SharedPreferences, но он кажется немного взломанным. Кто-нибудь знает что-то более элегантное?

ответ

0

Почему бы вам не добавить идентификатор к намерению, вызванному щелчком по первому списку? В вашей первой RemoteViewServicesFactory:

Bundle extras = new Bundle(); 
extras.putInt("ID", id); 
Intent fillInIntent = new Intent(); 
fillInIntent.putExtras(extras); 
rv.setOnClickFillInIntent(R.id.widget_item, fillInIntent); 

затем в вашем втором RemoteViewServicesFactory, вы будете читать это так:

Int id = extras.getInt("ID"); 
Смежные вопросы