2011-01-07 2 views
0

DBコレクション(SQLite)があり、ROW_IDSの配列を作成したいと思います。私は、JavaとAndroidのコーディングに非常に新しいです Android:カーソルからROW_IDSの配列を作成しますが、どうですか?

java.lang.ArrayIndexOutOfBoundsException

... 活動コンポーネントを開始できません:

db.open(); 
String Chapter = "Something"; 
Cursor c = db.getSetsByChapter(Chapter); 
int[] ids = {}; 
if (c.moveToFirst()){ 
    int i = 0;  
do { 
ids[i] = Integer.parseInt(c.getString(0)); 
i++; 
} while (c.moveToNext()); 
} 


db.close(); 
Toast.makeText(this,"The array contains " + ids.length + " elements",Toast.LENGTH_LONG).show(); 

しかし、私は得続ける:私は、次のように動作するはずだと思います。私はこれを3日間行っていて、それを失っています!

答えて

0

まず、例外が発生している行を表示する必要があります。あなたはその後、

ids[i] = Integer.parseInt(c.getString(0)); 

にしてみてください

第二に、int[] ids = {};は長さ0でintの配列を宣言するには、これが不可能である、との境界例外のうちので、配列のインデックスインデックスは0にデータを置きます。

+0

したがって、配列を宣言する前に、コレクションに含まれる要素の数を調べる必要があります。私がそれをどうやってできるか見てみる。 –

+0

ありがとう - やっと私は再び寝ることができます!これはトリックでした: –

+0

// ---エントリからIDを取得--- db.open(); 文字列チャプター= "何か"; カーソルc = db.getSetsByChapter(章); int [] ids =新しいint [c.getCount()]; if(c.moveToFirst()){ int i = 0; \t \t do { \t ids [i] = Integer.parseInt(c.getString(0)); \t i ++; \t} while(c.moveToNext()); } db.close(); Toast.makeText( "配列に" + ids.length + "要素が含まれています"、Toast.LENGTH_LONG).show(); } –

0

配列を割り当てる必要があります。 List<int>を使用してリストを整数配列に変換する

+0

男!あなたたちはすごいです! –

+0

これはできません。プリミティブのリストを作成することはできません。それはリストでなければなりません。 'List ids = new ArrayList ();' – Falmarri

関連する問題