首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在文本视图Android中显示多行

在文本视图Android中显示多行
EN

Stack Overflow用户
提问于 2013-10-04 23:38:39
回答 2查看 952关注 0票数 0

你好,伙计们,我想展示记录。但是,我不想在listview中显示它们,而是在文本视图中显示它们。我在我的程序中做了新的行提要\n,但是在我的程序中,它只是显示了第一个记录。

这就是我迄今为止尝试过的:

MainActivity.class

代码语言:javascript
复制
 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

代码语言:javascript
复制
        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;

}

我不知道怎么回事。请帮我找出我的代码中遗漏了什么。提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-10-05 00:05:34

似乎您只是在加载游标给出的第一行。您必须使用cursor.moveToNext();才能获得其余的数据。请看下面的示例:

代码语言:javascript
复制
// 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
EN

Stack Overflow用户

发布于 2013-10-05 03:22:49

正如前面提到的,您缺少了cursor.moveToNext()函数以移动到下一条记录。此外,我还想提到编码风格中的其他几个问题。您不应该在查询函数本身中调用moveToFirst(),在实际遍历记录的地方使用它。还要确保适当地关闭光标。因此,您的代码应该如下所示:

代码语言:javascript
复制
cursor = dbHelper.fetchbBreedByName(dog_name);
if (cursor != null) {
   if (cursor.moveToFirst()) {
      do {
          ....
          < access the record >
          ...       
      } while (cursor.moveToNext());
   }

   cursor.close();  // very important
}

并从fetchbBreedByName()中删除这些行

代码语言:javascript
复制
if (mCursor != null) {
    mCursor.moveToFirst();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19192341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档