0
public List<String> getDays(long iid)
{
  List<String> days= new ArrayList<String>();
  cursor = database.query(MySqliteHelper.TABLE_REPEAT, daysColumn, MySqliteHelper.COLUMN_TID + "=" + iid, null, null, null, null);
  while(fg>=1)
  {
      cursor = database.query(MySqliteHelper.TABLE_REPEAT, daysColumn, MySqliteHelper.COLUMN_TID + "=" + iid, null, null, null, null);
          String day = cursor.getString(cursor.getColumnIndex(MySqliteHelper.COLUMN_DAYS));
        days.add(day);
      cursor.moveToNext();
          if(cursor.isAfterLast())
          {
       fg=0;
          }
  }
  cursor.close();
  fg=1;
  return days;
  }

今、私はarrayindexoutofbound例外を取得します!! 私はアンドロイドとプログラミングが初めてです..使用すべきテクニックを教えてください。

私のログ猫は次のように示しています: 03-06 11:20:12.941: E/AndroidRuntime(2025): FATAL EXCEPTION: main 03-06 11:20:12.941: E/AndroidRuntime(2025): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.habitator/com.example.habitator.AlarmDays}: android.database.CursorIndexOutOfBoundsException: インデックス -1 が要求され、サイズは 1 です

4

2 に答える 2

0

データベースに再度クエリを実行するのはなぜですか? cursor.isAfterLast() を満たす場合はブレークを使用します。このため、エラー arrayindexoutofbound が発生し、

また、cursor.moveToFirst(); を指定します。カーソルを最初の位置に移動する

これを試してください:

public List<String> getDays(long iid)
{
  List<String> days= new ArrayList<String>();
  cursor = database.query(MySqliteHelper.TABLE_REPEAT, daysColumn, MySqliteHelper.COLUMN_TID + "=" + iid, null, null, null, null);
  cursor.moveToFirst();
  while(fg>=1)
  {
         if(cursor.isAfterLast())
          {
              fg=0;
              break; //brek the loop 
          }
      String day = cursor.getString(cursor.getColumnIndex(MySqliteHelper.COLUMN_DAYS));
        days.add(day);
      cursor.moveToNext();  
  }
  cursor.close();
  fg=1;
  return days;
  }

これがうまくいくことを願っています!

于 2013-03-06T11:20:30.933 に答える
0
      Cursor c=db.rawQuery("select * from table_name where user_fk='" + get_userid + "'",null);
     List<String[]> list = new ArrayList<String[]>();

         c.moveToFirst();
         while(!c.isAfterLast())
         {
             title=new String[]{c.getString(3),c.getString(0)};
             list.add(title);
             c.moveToNext(); 
         }      

     c.close();
     db.close();

1.配列を使用して、テーブルから複数の値を取得します。

2.その後、その配列値をリストに格納します。

于 2013-03-06T11:44:55.383 に答える