![](/img/trans.png)
[英]How to retrieve data from sqlite database in android and display it in 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());
現在可以進行所需的工作了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.