I already posted the basic pattern two messages back.

As for nested data, you might want to use CursorAdapter (with subclassing)
instead of trying to fit nested queries to SimpleCursorAdapter, which is
more trouble than it's worth.

If you do, you won't need to iterate through the top-level query as a
preliminary step. Your nested query will go into the adapter's bindView
method.

*http://thinkandroid.wordpress.com/2010/01/11/custom-cursoradapters/<http://thinkandroid.wordpress.com/2010/01/11/custom-cursoradapters/>
* <http://thinkandroid.wordpress.com/2010/01/11/custom-cursoradapters/>

http://android-mag.blogspot.com/2011/02/android-examples-how-to-use.html


-- Kostya

2011/5/26 Adrian Kajda <[email protected]>

> Can you give me a link with an example of that?
>
> 2011/5/26 Kostya Vasilyev <[email protected]>
>
>> You can use the pattern for the top level and the nested query both.
>>
>> -- Kostya
>> 2011/5/26 adek <[email protected]>
>>
>>> 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 <[email protected]> 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 <[email protected]>
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > > 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 <[email protected]> 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 <[email protected]> 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
>>> [email protected]
>>> > > To unsubscribe from this group, send email to
>>> > > [email protected]
>>> > > 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 [email protected]
>>> To unsubscribe from this group, send email to
>>> [email protected]
>>> 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 [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/android-developers?hl=en
>>
>
>
>
> --
> pozdrawiam,
> Adrian Kajda
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> 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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to