2015-01-16 1 views
2

POJO CLASS GridItem:Преобразовать объект ArrayList для курсора в андроида

public class GridItem { 

    int id; 

    String path; 
    String name; 
    String chr; 
    int headerId; 


    public GridItem(String path, String name, String chr){ 
     this.path = path; 
     this.name = name; 
     this.chr = chr; 
    } 
} 

В деятельности:

ArrayList<GridItem> books = new ArrayList<GridItem>(); 

Теперь я хочу, чтобы преобразовать этот ArrayList в курсор для создания sectionindexer в GridView. так что я использую этот курсор в поле ниже код:

static class YOUR_ADAPTER extends SimpleCursorAdapter implements SectionIndexer { 

private AlphabetIndexer mIndexer; 

YOUR_ADAPTER (Context context, AlbumBrowserActivity currentactivity, 
      int layout, Cursor cursor, String[] from, int[] to) { 
     super(context, layout, cursor, from, to); 

     getColumnIndices(cursor); 
    } 

    private void getColumnIndices(Cursor cursor) { 
     if (cursor != null) { 
      YOUR_COLUMN = cursor.getColumnIndexOrThrow(WHAT_YOU'RE_SORTING); 

      if (mIndexer != null) { 
       mIndexer.setCursor(cursor); 
      } else { 
       mIndexer = new AlphabetIndexer(cursor, YOUR_COLUMN, mResources.getString(
         R.string.fast_scroll_alphabet)); 
      } 
     } 
    } 

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

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

public int getSectionForPosition(int position) { 
     return 0; 
    } 
} 

если кто-нибудь есть решение, то сделать его общедоступным здесь ..

+0

Если 'ArrayList' предназначен для источника данных, то почему бы не создать пользовательский адаптер, расширив' BaseAdapter' или 'ArrayAdapter' вместо' SimpleCursorAdapter'? –

+0

Я уже пробовал это тоже .. но sectionindexer не показывает .. – Riser

+0

см. [Android ListView с быстрым указателем прокрутки и раздела] (http://twistbyte.com/tutorial/android-listview-with-fast-scroll-and- section-index), который работает с ArrayAdapter –

ответ

1

Вам может понадобиться использовать MatrixCursor, это изменчивая реализация курсора при поддержке массива Объекты. Используйте newRow() для добавления строк. При необходимости автоматически расширяет внутреннюю емкость.