Domanda

Ho un CursorAdapter personalizzato che sto usando per gonfiare un layout di elemento personalizzato e lo stile di conseguenza, come mostrato nel seguente codice. Il mio problema è che a volte le informazioni stile sbagliato viene fornita anche se i dati provenienti dal DB è corretto (quindi per la isEvent == true sotto esempio prendo, ma che andrà a stile come se isEvent == false.

Si tratta di un bug noto? Sto facendo qualcosa di sbagliato o c'è qualcosa che posso fare che risolvere questo problema?

private class EventAdapter extends CursorAdapter {
    public EventAdapter(Context context) {
        super(context, null);
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        return getLayoutInflater().inflate(R.layout.event_view_list_item, parent, false);
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        final boolean isEvent = cursor.getInt(EventQuery.IS_EVENT) == Event.EVENT;
        final String eventName = cursor.getString(EventQuery.NAME);
        final TextView eventNameView = (TextView) view.findViewById(R.id.event_name);

        if (isEvent) {
            eventNameView.setText(eventName);
            view.findViewById(R.id.arrow).setVisibility(View.VISIBLE);
            view.findViewById(R.id.in_play_icon).setVisibility(View.GONE);
        } else {
            eventNameView.setText(cursor.getString(EventQuery.NAME));
        }
    }
}
È stato utile?

Soluzione

Credo che questo è solo un caso del vecchio numero di Android viste riutilizzo. Ripristinando la vista e sostituire se del caso questo può essere fissato

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