получить следующее значение в Android с помощью SQLite - PullRequest
0 голосов
/ 24 января 2012

У меня есть небольшое приложение на android. Во время этого приложения я страдаю от этой проблемы:

Я ищу ключевое слово, используя " oh ", затем я включаю в список просмотра, используя этот код,

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 и Next для отображения 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();
        }
}

Это код для нажатия следующей кнопки:

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

В следующей кнопке: если cursor.moveToPosition (position); , то при следующем имени отображаются совпадающая позиция и идентификатор таблицы.Означает положение 2, затем отображает имя 2 из таблицы.

В следующей кнопке: Если cursor.moveToNext (); , то в следующем имени отображается начало таблицы. Значит 0 имя идентификатора из таблицы.

Ответы [ 3 ]

1 голос
/ 24 января 2012

Вы должны сделать это так:

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()

0 голосов
/ 24 января 2012

Вместо использования 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.
                   }
           }
     }
     ...
0 голосов
/ 24 января 2012

Сначала поставьте cursor.moveToFirst();. Я имею в виду, скажи это так ...

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...