Mam główną aktywność, która ma 2 fragmenty. Głównym działaniem jest SearchView
na pasku akcji. Oba fragmenty mają listę dużej liczby ciągów, List<String>
.Przekazywanie danych do przeszukiwania aktywności
Przepływ jest:
Użytkownik wchodzi Fragment I -> Wybiera ciąg (powiedzmy Selection1) -> Na podstawie Selection1 listą ciągów jest wypełniana w drugim fragmencie - -> Tutaj użytkownik wybiera drugi ciąg ---> Przetwarzanie na podstawie tych dwóch ciągów.
Teraz ponieważ oba fragmenty zawierają dużą liczbę ciągów, użytkownik wpisze zapytanie w SearchView
, który filtruje listę i redukuje go do mniejszego listy wyświetlanej w SearchableActivity
.
Teraz problem polega na tym, w jaki sposób SearchableActivity
uzyskuje dostęp do tych dwóch List<String>
, aby je filtrować w oparciu o zapytanie i wyświetlać zmniejszoną listę użytkownikowi.
Obecnie co zrobiłem jest przesłonięta onSearchRequested
i przekazać te dane jako
@Override
public boolean onSearchRequested()
{
Bundle appData = new Bundle();
appData.putString(FRAGMENT_ID, "Fragment_A");
appData.putStringArrayList(SEARCH_LIST, searchList);
startSearch(null, false, appData, false);
return true;
}
Czy istnieje lepszy sposób lub standardowy sposób za pomocą których ten problem może być obsługiwane czyli implementacji, który pozwala danych opierać od mojego MainActivity
do SearchableActivity
?
Edytuj: Dodawanie kodu. Pokazuje, jak dane są ustawione w Fragment
. onDataReceived
jest wywoływana z HttpManager
, która odbiera dane.
@Override
public void onDataReceived(String type,final Object object)
{
switch(type)
{
case PopItConstants.UPDATE_LIST:
getActivity().runOnUiThread(new Runnable() {
@Override
public void run()
{
updateCinemaList((List<String>) object);
}
});
break;
}
}
public void updateDataList(List<String> data)
{
this.dataList = data;
spinner.setVisibility(View.GONE);
mAdapter.updateList(dataList);
}
Może ten link mógłby Ci pomóc –
prat
Czy możesz pokazać swój kod, w jaki sposób uzyskujesz i wyświetla dane, a następnie otrzymujesz dane użytkownik wybrał proszę? Łatwiej będzie na to odpowiedzieć, niż napisać uogólnioną odpowiedź. –
@Heyyou Dane to w zasadzie 'Lista' zawarta w powiedzmy Fragment A. Ale SearchableActivity nie ma dostępu do tej listy. Nie wiem, jaki kod jest potrzebny do wklejenia tutaj, aby wyjaśnić to dalej. –
unrealsoul007