Android无法获取所有行数据
问题描述:
我无法从sql获取所有行数据。Android无法获取所有行数据
DatabaseHandler.java
public HashMap<String, String> getChannelDetails(){
HashMap<String,String> channels = new HashMap<String,String>();
String selectQuery = "SELECT * FROM " + TABLE_CHANNEL;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
channels.put("title", cursor.getString(1));
channels.put("url", cursor.getString(2));
channels.put("create_at", cursor.getString(3));
} while (cursor.moveToNext());
Log.d("SELECT", channels.toString());
Log.d("Count", Integer.toString(cursor.getCount()));
}
cursor.close();
db.close();
// return channels
return channels;
}
Showresult.java
for(int i = 0; i < 13; i++){
HashMap<String, String> allchannel = db.getChannelDetails();
String id = allchannel.get("id");
String title = allchannel.get("title");
String url = allchannel.get("url");
String date = allchannel.get("created_at");
titles[i] = title;
Toast.makeText(context,titles[i]+" "+url+" "+ date, Toast.LENGTH_SHORT).show();
}
的cursor.getCount()有13个,但只输出显示最后一行重复数据。
答
你的方法更改为以下几点:
public ArrayList<HashMap<String, String>> getChannelDetails(){
ArrayList<HashMap<String, String>> list=new ArrayList<HashMap<String, String>>();
String selectQuery = "SELECT * FROM " + TABLE_CHANNEL;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
HashMap<String,String> channels = new HashMap<String,String>();
channels.put("title", cursor.getString(1));
channels.put("url", cursor.getString(2));
channels.put("create_at", cursor.getString(3));
list.add(channels);
} while (cursor.moveToNext());
Log.d("Count", Integer.toString(cursor.getCount()));
}
cursor.close();
db.close();
// return channels
return list;
}
现在使用这个列表通过的结果进行迭代。
只是提醒(对@Eric)这不是一个好的工作方法。你最好创建一个类(Channel)并返回ArrayList,当所有的字段都被修复时,没有必要以一种看起来像Javascript属性列表的方式来使用HashMap。 –
xandy
关于数组列表的问题。 为(HashMap中图:allchannel){ 为(条目 mapEntry:map.entrySet()) \t \t \t { \t \t \t字符串值= mapEntry.getValue(); }} 现在它显示所有的值,我如何获得特定的键值? – Eric
通过http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Map.Entry.html#getKey%28%29 – jeet