2013-10-04 2 views
0

Привет, ребята, я хочу отображать записи. Однако я не хочу отображать их в списке, но в текстовом виде. У меня есть, чтобы сделать новый фид строки \ n, чтобы сделать трюк, но в моей программе он просто показывает первую запись.Показать несколько строк в текстовом виде Android

Это то, что я пытался до сих пор:

MainActivity.class

Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
     dog_name = extras.getString("dog_name"); 
     cursor = dbHelper.fetchbBreedByName(dog_name); 

     strID = cursor.getString(0); 
     strDesc = cursor.getString(cursor.getColumnIndexOrThrow("description")); 
     strDiet = cursor.getString(cursor.getColumnIndexOrThrow("diet")); 
     strShelter = cursor.getString(cursor.getColumnIndexOrThrow("shelter")); 
     strHygiene = cursor.getString(cursor.getColumnIndexOrThrow("hygiene")); 
     strMedication = cursor.getString(cursor.getColumnIndexOrThrow("medication")); 
     strBreed = cursor.getString(cursor.getColumnIndexOrThrow("breed")); 

     Log.d("Animal ID", "Animal ID is " + strID + " and breed is " + strBreed); 
     Log.d("Desc", "Desc " + strDesc); 
     Description.setText(strDesc); 
     Diet.setText(strDiet); 
     Shelter.setText(strShelter); 
     Hygene.setText(strHygiene); 
     Medication.setText(strMedication); } 

DBHelper.class

 public Cursor fetchbBreedByName(CharSequence inputText) throws SQLException { 

     Cursor mCursor = null; 
     if (inputText == null || inputText.length() == 0) { 
     mCursor = myDataBase.query(DB_TABLE, new String[] { KEY_ID, KEY_DESCRIPTION, 
       KEY_DIET, KEY_SHELTER, KEY_HYGIENE, KEY_MEDICATION, KEY_BREED }, 
     null, null, null, null, null); 

     } 
     else { 
      String qry = "SELECT _id, description, diet, shelter, hygiene, medication, " + 
       "breed FROM tblAnimalInfo WHERE breed LIKE '%" + inputText + "%';"; 

      mCursor = myDataBase.rawQuery(qry, null); 
     //mCursor = myDataBase.query(DB_TABLE, new String[] { KEY_ID, KEY_DESCRIPTION, 
     //  KEY_DIET, KEY_SHELTER, KEY_HYGIENE, KEY_MEDICATION, KEY_BREED }, 
     // KEY_BREED + " like '%" + inputText + "%'", null, null, null, null); 
     } 
     if (mCursor != null) { 
     mCursor.moveToFirst(); 
     } 
     return mCursor; 

} 

Я не знаю, что это неправильно. Пожалуйста, помогите мне выяснить, чего не хватает в моем коде. Заранее спасибо.

ответ

0

Кажется, что вы загружаете первую строку, указанную вашим курсором. Вы должны использовать cursor.moveToNext(); чтобы получить остальную часть ваших данных. Посмотрите на пример ниже: функция

// Getting All Contacts 
public List<Contact> getAllContacts() { 
List<Contact> contactList = new ArrayList<Contact>(); 
// Select All Query 
String selectQuery = "SELECT * FROM " + TABLE_CONTACTS; 

SQLiteDatabase db = this.getWritableDatabase(); 
Cursor cursor = db.rawQuery(selectQuery, null); 

// looping through all rows and adding to list 
if (cursor.moveToFirst()) { 
    do { 
     Contact contact = new Contact(); 
     contact.setID(Integer.parseInt(cursor.getString(0))); 
     contact.setName(cursor.getString(1)); 
     contact.setPhoneNumber(cursor.getString(2)); 
     // Adding contact to list 
     contactList.add(contact); 
    } while (cursor.moveToNext()); 
} 

// return contact list 
return contactList; 

}

0

У вас не хватает cursor.moveToNext(), чтобы перейти к следующей записи, как уже упоминалось ранее. Кроме того, я хотел бы упомянуть еще несколько вопросов в стиле кодирования. Вы не должны вызывать moveToFirst() в самой функции запроса, используйте ее там, где вы фактически просматриваете записи. Также убедитесь, что вы правильно закрываете курсор. Так что ваш код должен выглядеть следующим образом:

cursor = dbHelper.fetchbBreedByName(dog_name); 
if (cursor != null) { 
    if (cursor.moveToFirst()) { 
     do { 
      .... 
      < access the record > 
      ...  
     } while (cursor.moveToNext()); 
    } 

    cursor.close(); // very important 
} 

И удалите эти строки из fetchbBreedByName()

if (mCursor != null) { 
    mCursor.moveToFirst(); 
} 
+0

Спасибо за ответ, я хотел бы спросить, что должно быть помещено внутри записи доступа для моего приложения? – Dunkey

+0

Чтение всех полей записей с помощью cursor.getString(), что вы уже делаете. – sjdutta

Смежные вопросы