Den*_*nie 35 android arraylist android-cursor android-sqlite
如何使用光标数据创建列表数组(滚动时列表显示第一个字母)?
Isa*_*ler 67
浏览中的每个元素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));
}
Run Code Online (Sandbox Code Playgroud)
(替换WhateverTypeYouWant为您想要创建的任何类型ArrayList,以及WHATEVER_COLUMN_INDEX_YOU_WANT要从游标获取的值的列索引.)
imb*_*izi 40
一个快速更正:上面的for循环跳过光标的第一个元素.要包含第一个元素,请使用:
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();
}
Run Code Online (Sandbox Code Playgroud)
Pea*_*oto 22
甚至比@ imbrizi更好的答案是:
ArrayList<String> mArrayList = new ArrayList<String>();
while(mCursor.moveToNext()) {
mArrayList.add(mCursor.getString(mCursor.getColumnIndex(dbAdapter.KEY_NAME))); //add the item
}
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64495 次 |
| 最近记录: |