簡體   English   中英

如何使用SQLite在android中將整個數據庫表數據顯示為TextView

[英]how to display the entire database table data into a TextView in android using SQLite

我的問題是,TextView中顯示的唯一數據是表的最后整行。

所以這是我的代碼,用於從數據庫表中獲取全部數據:

public List<Person> getAllPerson()
{
    List<Person> personList = new ArrayList<Person>();

    //select query
    String selectQuery = "SELECT  * FROM " + DATABASE_TABLE;

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


    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext())
    {
         Person person = new Person();
            person.setId(Integer.parseInt(cursor.getString(0)));
            person.setName(cursor.getString(1));
            person.setHotness(cursor.getString(2));
            person.setAge(Integer.parseInt(cursor.getString(3)));

            // Adding person to list
            personList.add(person);
    }

    return personList;

}

這是我的代碼,用於將表數據顯示到TextView中:

  public class SQLiteView extends Activity
  {

private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState)
{
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sqlview);
    tv = (TextView) findViewById(R.id.tvDBdisplay);

    DbHelper d = new DbHelper(this);

    List<Person> person = d.getAllPerson();

    for (Person p: person)
    {
        String data =p.getId() + " " + p.getName() + " " + p.getHotness() +      " " + p.getAge();
        tv.setText(data);

    }

   }    
  }

因為您仍在創建新的String ,但效果不是很好,效率也不高,因此這是您只有最后一行的原因。

所以你這樣做:

-> 獲取行->將數據添加到字符串-> setText
-> 獲取下一行->將數據添加到String-> setText
...
-> 獲取最后一行->將數據添加到String-> setText

這不是很好。 如果您在TABLE有milion行,則可以創建milion String instances ,這不是很好,不是嗎? 別忘了String不可變的,並且這種工作是非常廣泛的,因此在類似的情況下,您需要使用StringBuilder ,它的方法可以針對String提供出色的性能。

StringBuilder builder = new StringBuilder();
for (Person p: person) {
   builder.append(p.getId() + " "
     + p.getName() + " " + p.getHotness() + " " + p.getAge());
}
tv.setText(builder.toString());

現在可以進行所需的工作了。

我會使用(由於其他答案中所顯示的原因)

tv.append(p.toString());

因為TextView已經在內部保留了文本。

請參見TextView.append()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM