Ho un'attività principale con 2 frammenti. L'attività principale ha un SearchView
nella barra delle azioni. Entrambi i frammenti hanno un elenco di un numero elevato di stringhe, List<String>
.Passaggio dei dati di ricerca alle attività ricercabili
Il flusso è: entra
utente Fragment I -> Seleziona una stringa (diciamo selezione1) -> In base a selezione1 una lista di stringhe è popolata nel secondo frammento - -> Qui l'utente seleziona una seconda stringa ---> Elaborazione basata su queste due stringhe.
Ora poiché sia i frammenti contengono un gran numero di stringhe, l'utente immette una query nel SearchView
, che filtra l'elenco e lo riduce a un piccolo elenco visualizzato nel SearchableActivity
.
Ora il problema è come l'SearchableActivity
ottiene l'accesso a questi due List<String>
per filtrarli in base alla query e visualizzare un elenco ridotto all'utente.
Attualmente quello che ho fatto è sovrascritti onSearchRequested
e passare i dati come
@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;
}
C'è un modo migliore o un modo standard con cui questo problema può essere gestito vale a dire un'implementazione che consente ai dati di essere basata dalla mia MainActivity
a SearchableActivity
?
Modifica: aggiunta di codice. Mostra come sono impostati i dati nel Fragment
. onDataReceived
viene chiamato dallo HttpManager
che riceve i dati.
@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);
}
Questo link potrebbe essere d'aiuto –
prat
Puoi mostrare il tuo codice di come stai ricevendo e visualizzando i dati e quindi ottenere i dati l'utente ha selezionato per favore? Sarà più facile rispondere specificamente che scrivere una risposta generalizzata. –
@Heyyou I dati sono fondamentalmente 'Elenco' che è contenuto nel diremo Frammento A. Ma SearchableActivity non ha accesso a questo elenco. Non so quale codice devo incollare qui per chiarire ulteriormente. –
unrealsoul007