Domanda

Sto cercando di creare un calendario utilizzando il widget Galleria. Ho un corso di visualizzazione mensile che gestisce la creazione di una visualizzazione per un mese specifico. La mia classe MonthGallery utilizza monthview come visualizzazioni secondarie mentre il mio monthviewadapter crea le visualizzazioni mensili per la monthgallery. Il problema che sto riscontrando è provare ad aggiornare l'adattatore con il mese precedente e successivo mentre l'utente scorre o passa al mese precedente o successivo. Uso la posizione data nella galleria onItemSelectedListener per aggiungere mesi alla parte anteriore e posteriore dell'adattatore a seconda di questa posizione. Ad esempio:

OnItemSelectedListener mGalleryOnItemSelectedListener = new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> adapterview, View view, int position, long id) {

        MonthView mv = (MonthView) view;
        int month = mv.getMonth();
        int year = mv.getYear();
        updateMonthBar(month, year);


        if ((position + 1) == mMonthViewGallery.getCount()) {
            if (Calendar.DECEMBER == month) {
                mMonthViewAdapter.addView(Calendar.JANUARY, year + 1);
            } else {
                mMonthViewAdapter.addView(month + 1, year);
            }
            mMonthViewGallery.setSelection(position);
        }

        if (0 == position) {

            if (Calendar.JANUARY == month) {
                mMonthViewAdapter.addViewToFront(Calendar.DECEMBER, year - 1);
            } else {
                mMonthViewAdapter.addViewToFront(month - 1, year);
            }
            mMonthViewGallery.setSelection(1);
        }
    }

PROBLEMA
Una volta che l'utente è passato a un altro mese e quindi tenta di scorrere fino al primo mese, la galleria non si aggancia automaticamente alla selezione successiva. Nell'adattatore, quando viene chiamato addView (int month, int year) chiamerà notifyDataSetChanged () in modo che aggiorni la galleria con il mese precedente o successivo ma questo sembra causare lo "snap" imprevisto durante lo scorrimento lento. Non sono sicuro di come strutturarlo in modo che lo scorrimento sia fluido.

MODIFICA
Ora sto usando Gallery.setCallbackDuringFling (false) ma c'è un modo per disabilitare il callback onitemselected durante lo scorrimento della galleria e quindi chiamare onitemselected () quando ha finito di scorrere?

È stato utile?

Soluzione

galleria usata da Sostituisce il widget Galleriacon Visualizza il riciclaggio esiste?

ha rimosso una riga da onScroll()

postDelayed(mDisableSuppressSelectionChangedRunnable, SCROLL_TO_FLING_UNCERTAINTY_TIMEOUT);

Altri suggerimenti

È quello garantito sulla chiamata di notifyDatasetChanged () quando viene chiamata addView ()

Penso che tu possa controllarlo ..

Ero solito chiamare notifyDatasetChanged () immediatamente quando tocco le viste all'interno di un adattatore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top