You can use the pattern for the top level and the nested query both. -- Kostya 2011/5/26 adek <adrian.ka...@gmail.com>
> I tried to change my code this way. There is still a problem. > > I tried to check for empty rows but even then I've got this exception > error. > > Maybe the problem is in my way of dealing with those two cursors > (second cursor is in another) > > Maybe I'll start from the beggining and you will tell me a better way: > > I've got ONE ListView. On this list I'd like to have some values from > database (easy - done with one cursor) > but in some list positions there should be values with some conditions > from another query (second cursor). > > > On May 26, 10:18 am, Kostya Vasilyev <kmans...@gmail.com> wrote: > > A cursor's initial position is -1, right before the first row, so it's > quite > > enough to do this: > > > > Cursor cursor = ..... query ... > > if (cursor != null) { > > ... get column indices here .... > > while (cursor.moveToNext()) { > > ... get data using the indices here ... > > } > > cursor.close(); > > > > } > > > > Here it's not necessary to use getCount or moveToFirst, or handle the > case > > of no data in any special way. > > > > -- Kostya > > > > 2011/5/26 adek <adrian.ka...@gmail.com> > > > > > > > > > > > > > > > > > Thanks. But this is strange. > > > When I add this condition > > > > > if(cursor.getCount() > 0) } > > > ... > > > > > My ListView is empty. In LogCat everything looks fine. > > > > > On May 26, 9:59 am, Senthil ACS <acs....@gmail.com> wrote: > > > > Hi, > > > > > > After you get a cursor object from a query, check the count before > > > > doing "moveToFirst()". > > > > > > if(cursor.getCount() > 0) > > > > { > > > > cursor.moveToFirst(); > > > > ... processing ... > > > > > > } > > > > > > On May 26, 3:12 am, adek <adrian.ka...@gmail.com> wrote: > > > > > > > Hello, > > > > > > > As a beginner in android java world I need your help. I've got > problem > > > > > with famous "CursorIndexOutOfBoundsException". > > > > > > > I'm using SQLite db, and I have two cursors, I'm getting some rows > > > > > from database. > > > > > I need to get some previous values with some conditions with second > > > > > cursor (c2) and put these values on ListView. > > > > > > > Code works with one exception: > > > > > "android.database.CursorIndexOutOfBoundsException: Index 0 > requested, > > > > > with a size of 0". > > > > > > > ListView looks OK if I just ignore this exception but I want to fix > > > > > it. > > > > > > > I know it is connected to with Cursor. I tried to check some > > > > > conditions - it didn't help. Maybe if you could take a look at my > code > > > > > you find where is the cause. > > > > > > > Code: > > > > > > > public void LoadLogGrid() > > > > > { > > > > > dbHelper=new DatabaseHelper(this); > > > > > try > > > > > { > > > > > > > int LogName = (int) spinLog.getSelectedItemId(); > > > > > Cursor c=dbHelper.getLogByLogID(LogName); > > > > > if (c != null) c.moveToFirst(); > > > > > int count = c.getCount(); > > > > > > > if (c.moveToFirst()){ > > > > > ArrayList<String> mArrayList = new > ArrayList<String>(); > > > > > > > int i=0; > > > > > do { > > > > > > > int sVar1 = c.getInt(c.getColumnIndex("Var1")); > > > > > Long sId = (long) > c.getInt(c.getColumnIndex("_id")); > > > > > > > Cursor > c2=dbHelper.getPrevLogByLogID(LogName,sVar1); > > > > > c2.moveToFirst(); > > > > > > > if (c2!=null) { > > > > > String sPrevOdo = > > > c2.getString(c2.getColumnIndex("Odo")); > > > > > mArrayList.add(sPrevOdo); > > > > > c2.close(); > > > > > } else { > > > > > //stopManagingCursor(c2); > > > > > //c2.close(); > > > > > Log.d("A:", "Something"); > > > > > } > > > > > > > String [] from=new String > > > []{"Date","Col1","Col2","Col3"}; > > > > > int [] to=new int [] > > > > > {R.id.logDate,R.id.logCol1,R.id.logCol2,R.id.logCol3,R.id.rowOpt2}; > > > > > SimpleCursorAdapter sca=new > > > > > LogCursorAdapter(this,R.layout.loggridrow,c,from,to,mArrayList); > > > > > grid.setAdapter(sca); > > > > > registerForContextMenu(grid); > > > > > i++; > > > > > > > } while (c.moveToNext()); > > > > > > > c.close(); > > > > > > > dbHelper.close(); > > > > > } > > > > > > > } > > > > > catch(Exception ex) > > > > > { > > > > > AlertDialog.Builder b=new > AlertDialog.Builder(this); > > > > > b.setMessage(ex.toString()); > > > > > b.show(); > > > > > } > > > > > > > } > > > > > > > Query in second cursor: > > > > > > > public Cursor getPrevLogByLogID(long LogID, long Var1) > > > > > { > > > > > SQLiteDatabase db=this.getReadableDatabase(); > > > > > String[] params=new String[] > > > > > {String.valueOf(LogID),String.valueOf(Var1)}; > > > > > > > Cursor c2=db.rawQuery("SELECT LogID as _id, Col1 > from > > > Log WHERE > > > > > Col2=? AND Col3<? AND Full=1 ORDER BY Odo DESC", params); > > > > > if (c2 != null) { c2.moveToFirst();} > > > > > return c2; > > > > > } > > > > > -- > > > You received this message because you are subscribed to the Google > > > Groups "Android Developers" group. > > > To post to this group, send email to > android-developers@googlegroups.com > > > To unsubscribe from this group, send email to > > > android-developers+unsubscr...@googlegroups.com > > > For more options, visit this group at > > >http://groups.google.com/group/android-developers?hl=en > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to android-developers@googlegroups.com > To unsubscribe from this group, send email to > android-developers+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en