문제

커서 데이터를 사용하여 목록 배열(목록은 스크롤할 때 첫 번째 알파벳을 표시함)을 어떻게 만들 수 있습니까?

도움이 되었습니까?

해결책

모든 요소를 ​​살펴보세요. Cursor, 을 선택하고 이를 하나씩 추가합니다. ArrayList.

ArrayList<WhateverTypeYouWant> mArrayList = new ArrayList<WhateverTypeYouWant>();
for(mCursor.moveToFirst(); !mCursor.isAfterLast(); mCursor.moveToNext()) {
    // The Cursor is now set to the right position
    mArrayList.add(mCursor.getWhateverTypeYouWant(WHATEVER_COLUMN_INDEX_YOU_WANT));
}

(바꾸다 WhateverTypeYouWant 당신이 만들고 싶은 어떤 유형으로든 ArrayList 의 그리고 WHATEVER_COLUMN_INDEX_YOU_WANT 커서에서 얻으려는 값의 열 인덱스를 사용합니다.)

다른 팁

하나의 빠른 수정 : 위의 루프는 커서의 첫 번째 요소를 건너 뜁니다. 첫 번째 요소를 포함하려면 다음을 사용하십시오.

ArrayList<String> mArrayList = new ArrayList<String>();
mCursor.moveToFirst();
while(!mCursor.isAfterLast()) {
     mArrayList.add(mCursor.getString(mCursor.getColumnIndex(dbAdapter.KEY_NAME))); //add the item
     mCursor.moveToNext();
}

@imbrizi의 대답보다 훨씬 나은 것입니다.

ArrayList<String> mArrayList = new ArrayList<String>();
while(mCursor.moveToNext()) {
     mArrayList.add(mCursor.getString(mCursor.getColumnIndex(dbAdapter.KEY_NAME))); //add the item
}

moveToNext() 남은 것이 없으면 False를 반환하므로 SLOC을 몇 가지 줄이면보기가 더 쉽습니다.

더 좋은 것은 루프 외부에서 열 인덱스를 얻는 것입니다.

ArrayList<String> mArrayList = new ArrayList<String>();
int columnIndex=mCursor.getColumnIndex(dbAdapter.KEY_NAME)
while(mCursor.moveToNext()) {
     mArrayList.add(mCursor.getString(columnIndex)); //add the item
}

나는 객체의 배열 목록을 원했기 때문에 나에게 정말 잘 작동했습니다.

List<MyObject> myList = new ArrayList<String>();
Cursor c = ...

while(c.moveToNext()) {
    myList.add(new MyObject(cursor.getInt(cursor.getColumnIndex("_id")), cursor.getString(cursor.getColumnIndex("column1")), cursor.getInt(cursor.getColumnIndex("column2")));        
}
c.close();

그냥 pojo를 만드십시오 MyObject 그리고 그것이 생성자가 있는지 확인하십시오.

Kotlin에서는이 확장을 사용할 수 있습니다.

fun <T> Cursor.toList(block: (Cursor) -> T) : List<T> {
    return mutableListOf<T>().also { list ->
        if (moveToFirst()) {
            do {
                list.add(block.invoke(this))
            } while (moveToNext())
        }
    }
}

그리고 그것을 사용하십시오 :

val listOfIds = cursor.toList { 
    // create item from cursor. For example get id:
    it.getLong(it.getColumnIndex("_id"))
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top