Sembra che il problema di aggiornamento sia stato discusso in precedenza, ma nessuna delle soluzioni ha funzionato correttamente.Visualizzazione frammento di rinfresco durante l'utilizzo di FragmentStatePagerAdapter
Quello che sto cercando di fare: Sto usando FragmentStatePagerAdapter. Ogni posizione dell'adattatore contiene un frammento che ha un layout lineare che ha l'aspetto di scacchi, con ogni cella rappresentata da un CheckedTextView.
E un listener che dovrebbe ascoltare i clic e rimuove la selezione precedente sulle celle e fa la nuova selezione.
cosa funziona: Ogni frammento è caricato correttamente con tutti i dati/stati predefiniti (calcolato mentre il frammento viene caricato in una lista)
Quando scatto una cella tutti gli stati dall'elenco cellule salvato sono recuperati correttamente e posso cambiare vedere il cambiamento di stato nel codice durante il debug. Allo stesso tempo, assegno un nuovo stato per CheckedTextView che rappresenta una cella. Questo è impostato come:
il problema: Anche se i valori vengono memorizzati ed assegnati correttamente la vista non può essere aggiornata i valori delle celle nella visualizzazione non vengono aggiornati.
punte che ho provato che non ha funzionato: 1. Chiamare adapter.notifyDataSetChanged: può essere chiamato durante l'utilizzo FragmentStatePagerAdapter solo quando abbiamo ignorato:
@Override
public int getItemPosition(Object object){
return POSITION_NONE;
}
2. Aggiunta Sovrascrivi i metodi per DestroyItem e aggiunge anche i frammenti a una mappa su getItem:
Questo non è appropriato in quanto sto lavorando con FragmentStatePagerAdapter, quindi l'intero scopo di utilizzare questo cercapersone sarebbe andato.
3. Chiamata non valida: Questo non è appropriato per questo scenario, ho bisogno di aggiornamento in tempo reale.
4. metodo setTag() in instantiateItem(): Non penso che sia appropriato in questa situazione.
discussioni referenziati: Refresh images on FragmentStatePagerAdapter on resuming activity
ViewPager PagerAdapter not updating the View
notifyDataSetChanged fails to update ListView
ho cercato di affermare il mio problema più chiaro possibile, se qualcuno ha bisogno di maggiori chiarimenti, chiedete .
risposte urgenti sarà molto apprezzato,
Acclamazioni
**** ***** Aggiornamento
sto usando la ViewPagerIndicator, invece di quello predefinito ViewPager.
nel setup, cosa rappresenta ciascun frammento? È solo un frammento visualizzato sullo schermo alla volta? Dov'è il codice che hai aggiunto? È all'interno della classe dei frammenti? Infine, cos'è GridRow? –
Ciao Sherif, ogni frammento rappresenta una scacchiera. Ho un'attività che chiama un frammento del contenitore, questo containerFragment ha un viewpager che ha il set FragmentStatePagerAadaper. Ogni elemento dell'adattatore è un frammento e in questo frammento nel suo onCreatView ogni vista di scacchi è inizializzata. Anche l'ascoltatore di una cella si trova nello stesso frammento in cui controllo gli stati correnti e il nuovo stato e modifica lo stato di conseguenza. Una GridRow è solo una riga di checkedTextview che rappresenta una cella. Spero che questo risponda a tutte le tue domande, a eventuali suggerimenti ....? – AliR
Il fatto che tutto avvenga all'interno del tuo frammento significa che non è necessario tutto questo fastidio. Sei sicuro che il tuo selettore (sfondo) sia corretto? Puoi mostrarlo e il tuo xml per ogni cella. Solitamente il caso in cui la vista non viene aggiornata si verifica quando si sta tentando di aggiornare un frammento specifico all'interno del viewpager. –