Алфавитный указатель с пользовательским адаптером - PullRequest
9 голосов
/ 07 ноября 2010

Может кто-нибудь показать мне пример использования AlphabetIndexer с пользовательским адаптером, который использует getView? У меня он работает со стандартным адаптером, но я понятия не имею, как реализовать его с помощью специального адаптера.

Спасибо

Ответы [ 2 ]

8 голосов
/ 04 декабря 2011

Если вы используете LoaderManager для управления курсором вашего адаптера, вам нужно выполнить небольшую настройку и переопределить ваши адаптеры методом swapCursor:

public Cursor swapCursor(Cursor c) {
    // Create our indexer
    if (c != null) {
        mIndexer = new AlphabetIndexer(c, c.getColumnIndex(Books.TITLE),
                " ABCDEFGHIJKLMNOPQRSTUVWXYZ");
     }
     return super.swapCursor(c);
 }

Все остальное остается таким же, как описано в @vsm.

7 голосов
/ 13 марта 2011

Привет, вот как я использую AlphaIndexer

private final class ContactListItemAdapter extends ResourceCursorAdapter
        implements SectionIndexer {
    AlphabetIndexer alphaIndexer;

    public ContactListItemAdapter(Context context, int layout, Cursor c) {
        super(context, layout, c);
        alphaIndexer = new AlphabetIndexer(c, NAME_COLUMN_INDEX,
                " ABCDEFGHIJKLMNOPQRSTUVWXYZ");
    }   

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
            .... 
            a normal getView
            ....
    }  

    public int getPositionForSection(int section) {
        return alphaIndexer.getPositionForSection(section);
    }

    public int getSectionForPosition(int position) {
        return alphaIndexer.getSectionForPosition(position);
    }

    public Object[] getSections() {
        return alphaIndexer.getSections();
    }
}

NAME_COLUMN_INDEX - это индекс столбца в схеме базы данных.

...

Если это не то, что вам нужно, пожалуйста, добавьте код, который должен расширять класс и т. Д.

В любом случае, я надеюсь, что это поможет.

...