使用SQLite在android中获取下一个值

时间:2012-01-24 08:46:14

标签: java android database sqlite

我在android中做了一个小应用程序。在这个应用程序中,我遇到了这个问题:

我使用“”搜索关键字,然后使用此代码列入listview。

nameList.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            try {
                Intent intent = new Intent(Search.this,
                        SearchDetails.class);
                /*
                 * Cursor cursor = (Cursor) adapter.getItem(position);
                 * intent.putExtra("JOK_ID",
                 * cursor.getInt(cursor.getColumnIndex("_id")));
                 */
                intent.putExtra("id", id);
                intent.putExtra("position", position);
                Log.d(TAG, " I.." + id);
                Log.d(TAG, " P.." + position);
                startActivity(intent);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

例如像enter image description here

现在,如果我点击 oham ,就会显示如下:enter image description here

最后,我想,如果我点击上一个按钮,则显示 john ,然后显示 krackohm 。并计算搜索名称的总数。 我已经尝试了下一个按钮的代码:

      Cursor cursor = db.rawQuery("SELECT _id, name FROM std WHERE _id = ?", 
                new String[]{""+Id});

        if (cursor.getCount() == 1)
        {
            cursor.moveToFirst();

            ...body 

        }

修改

这是第一次在创建

时单击任何列表项
 private void dislpayFirstName() { // this is display first time click list item
     writeDatabase();
     cursor = db.rawQuery("SELECT _id, name FROM std WHERE._id = ?", 
            new String[]{""+Id});

        if (cursor.getCount()> 0)

        {
        cursor.moveToFirst();
        nameDetails();
        }
}

这是Next Button点击的代码:

        position++; 
        writeDatabase();
        cursor = db.rawQuery("SELECT _id,name FROM std", null);
        if (cursor.getCount()> 0)
        {
           cursor.moveToPosition(position);
            //cursor.moveToNext();
        nameDetails();                  
        }

在下一个按钮中:如果 cursor.moveToPosition(position); ,则下一个名称显示匹配位置和表ID。表示位置2然​​后从表中显示2个数字名称。

在下一个按钮中:如果 cursor.moveToNext(); ,则下一个名称显示表格的开头。表格中的0个名称。

3 个答案:

答案 0 :(得分:1)

你必须这样做:

Cursor cursor = db.rawQuery("SELECT _id, name FROM std") // get all rows

比,显示第一个条目:

cursor.moveToFirst();
displayData();  // Method to display the data from the cursor on screen

点击“下一步”按钮:

if (cursor.moveToNext()){ // moveToNext returns true if there is a next row
displayData();}

同样地:使用“上一个”按钮使用cursor.moveToPrevious()

答案 1 :(得分:0)

首先放置cursor.moveToFirst();。我的意思是这样说..

cursor.moveToFirst();
if(your condition)
{

}

答案 2 :(得分:0)

您应该使用列表中项目的位置,而不是使用id作为额外的意图。

该位置将类似于光标中相同记录的位置,因此您只需将光标移动到该位置并从中获取所需的详细信息。然后您可以将其显示在活动上,就像您拥有的那样显示在您的第二个活动视图中。

所以在你的SearchDetails.class中,你需要这样做:

    ...
    int position=getIntent.getIntExtra("position",999); // 999 is default value
    Cursor cursor = db.rawQuery(<query which you fired for populating search results in previous activity>);    
   if (cursor.getCount()> 0 && position!=999){

        cursor.moveToPosition(position);    
        ...body  // fetch details and display it.
   }
   backButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {

               position--;
               //display details code
               Cursor cursor = db.rawQuery(<query which you fired for populating search results in previous activity>);    
               if (cursor.getCount()> 0 && position!=-1){

                     cursor.moveToPosition(position);    
                     ...body  // fetch details and display it.
               }
        }
   }
   nextButton.setOnClickListener(new OnClickListener() {                
        @Override
        public void onClick(View arg0) {

               position++;
               //display details code
               Cursor cursor = db.rawQuery(<query which you fired for populating search results in previous activity>);    
               if (cursor.getCount()> 0 && position!=cursor.getCount()){

                    cursor.moveToPosition(position)    
                    ...body  // fetch details and display it.
               }
       }
 }
 ...

编辑:

修订代码:(重复删除代码)

...
        int position=getIntent.getIntExtra("position",999); // 999 is default value
        Cursor cursor = db.rawQuery(<query which you fired for populating search results in previous activity>);        
       if (cursor.getCount()> 0 && position!=999){

            cursor.moveToPosition(position);        
            ...body  // fetch details and display it.
       }
       backButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {

                   position--;    
                   if (position!=-1){

                         cursor.moveToPosition(position);        
                         ...body  // fetch details and display it.
                   }
       }
       nextButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {

                   position++;                       
                   if (position!=cursor.getCount()){

                        cursor.moveToPosition(position)        
                        ...body  // fetch details and display it.
                   }
           }
     }
     ...