カーソルデータを使用してリスト配列(スクロールするとリストに最初のアルファベットが表示されます)を作成するにはどうすればよいですか?リストの作成方法は、Androidのカーソルデータを使って行うことができます
答えて
Cursor
のすべての要素を確認し、ArrayList
に1つずつ追加します。
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));
}
(あなたがカーソルから取得したい値の列インデックスとのArrayList
、およびWHATEVER_COLUMN_INDEX_YOU_WANT
を作りたいどんなタイプのWhateverTypeYouWant
を交換してください。)
こんにちは、私がしたいことは、私のリストに "拳の文字"を表示することです。カーソルからすべてのデータを取得した後、文字列[]配列に変換して「最初の文字」を取得する方法がわかりません。次のような文字になります。firstLetter = mString [firstVisibleItem] .charAt(0); – Dennie
Friends:上記のforループは完全に正しいものではありません(条件とインクリメントがスワップされます)。 'for(mCursor.moveToFirst();!mCursor.isAfterLast(); mCursor.moveToNext()){} ' –
このタイプのループは読みにくいものです。 @PearsonArtPhotoのソリューションは、よりエレガントで読みやすいです。 – WarrenFaith
一つの迅速な修正を: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();
}
非常に良い点imbrizi。これは、カーソルの要素をループするもっと良い方法です – DonnaLea
2つ以上の列の値を追加する方法は? –
@ 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
}
私は、オブジェクトのArrayListのを望んでいたので、この1つは私のために本当によく働いた:
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
を作り、それがコンストラクタを持っていることを確認してください。
カーソルのデータで 'ArrayList'を作成したいですか? –