-2

データベース「listOfFolder」テーブル「folder」からすべてのデータにアクセスしようとしており、データを文字列配列folders []に格納したいのですが、ArrayIndexOutOfBoundsExceptionを解決する方法を取得しています。

try{

  mydb = openOrCreateDatabase("listOfFolder", MODE_WORLD_WRITEABLE, null);  

    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
      }

int count = 0;
String folders[] = null;
Cursor folderCursor = mydb.query("folder", null, null, null, null, null, null); 
while(folderCursor.moveToNext()) {

  folders[count] = folderCursor.getString(folderCursor.getColumnIndex("name"));
                    count++;
}

ListView list = (ListView)findViewById(R.id.lv);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(DropboxActivity.this, android.R.layout.simple_list_item_1,folders);
list.setAdapter(adapter);
setContentView(R.layout.listoffolder);
4

3 に答える 3

4

問題は次のとおりです。

String folders[] = null;

何が起こると思っていましたか?

このコードは悪い考えです。なぜなら、クエリが戻すセットの大きさがわからないからです。new十分な大きさの配列を割り当てるために呼び出す必要があります。

可能であれば、 Listのようなコレクションを希望します。こちらも要チェック。

于 2012-07-03T20:26:42.013 に答える
4

変化する

String folders[] = null;
Cursor folderCursor = mydb.query("folder", null, null, null, null, null, null); 
while(folderCursor.moveToNext()){
    folders[count] = folderCursor.getString(folderCursor.getColumnIndex("name"));
    count++;
}

Cursor folderCursor = mydb.query("folder", null, null, null, null, null, null);
if (folderCursor.moveToFirst()) {
    String folders[] = new String[folderCursor.getCount()];
    do {
        folders[count] = folderCursor.getString(folderCursor.getColumnIndex("name"));
        count++;
    } while(folderCursor.moveToNext());
}
于 2012-07-03T20:27:37.647 に答える
0

Like this:

ArrayList<datatypehere> namehere=new ArrayList<datatypehere>();

Then you can add elements to the list by:

String example1 = "this is a string";
namehere.add(example1);

Theres quite abit on lists in the JavaDocs and Java Tutorials if you search for them.

于 2012-07-03T21:02:53.557 に答える