Android SQLite只显示一行
这是我在列表视图中以片段形式显示产品的代码。 这是我的列表视图片段,它只显示了一个项目我无法找出它的错误,请帮助我修复它Android SQLite只显示一行,android,android-sqlite,Android,Android Sqlite,这是我在列表视图中以片段形式显示产品的代码。 这是我的列表视图片段,它只显示了一个项目我无法找出它的错误,请帮助我修复它 db = new SQLiteHandler(getActivity()); HashMap<String, String> recent = db.getRecentDetails(); hidePDialog(); Product product = new Product(); product.setID(recent.g
db = new SQLiteHandler(getActivity());
HashMap<String, String> recent = db.getRecentDetails();
hidePDialog();
Product product = new Product();
product.setID(recent.get("pid"));
product.setTitle(recent.get("pname"));
product.setThumbnailUrl(recent.get("pimage"));
product.setDes1(recent.get("pdesc1"));
product.setDes2(recent.get("pdesc2"));
// adding product to movies array
productList.add(product);
db=newsqlitehandler(getActivity());
HashMap recent=db.getRecentDetails();
hidePDialog();
产品=新产品();
product.setID(最近的.get(“pid”);
product.setTitle(最近的.get(“pname”);
product.setThumbnailUrl(最近的.get(“pimage”);
product.setDes1(最近的.get(“pdesc1”);
product.setDes2(最近的.get(“pdesc2”);
//将产品添加到电影阵列
productList.add(产品);
这是我的数据库助手部分
public HashMap<String, String> getRecentDetails() {
HashMap<String, String> recent = new HashMap<String, String>();
String selectQuery = "SELECT * FROM " + TABLE_RECENT;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// Move to first row
cursor.moveToFirst();
if (cursor.getCount() > 0) {
recent.put("pname", cursor.getString(1));
recent.put("pimage", cursor.getString(2));
recent.put("pdesc1", cursor.getString(3));
recent.put("pdesc2", cursor.getString(4));
recent.put("pid", cursor.getString(5));
}
cursor.close();
db.close();
// return user
Log.d(TAG, "Fetching address from Sqlite: " + recent.toString());
return recent;
}
public HashMap getRecentDetails(){
HashMap recent=新的HashMap();
String selectQuery=“SELECT*FROM”+表\u最近;
SQLiteDatabase db=this.getReadableDatabase();
Cursor Cursor=db.rawQuery(selectQuery,null);
//移到第一排
cursor.moveToFirst();
if(cursor.getCount()>0){
最近的.put(“pname”,cursor.getString(1));
最近的.put(“pimage”,cursor.getString(2));
最近的.put(“pdesc1”,cursor.getString(3));
最近的.put(“pdesc2”,cursor.getString(4));
最近的.put(“pid”,cursor.getString(5));
}
cursor.close();
db.close();
//返回用户
Log.d(标记,“从Sqlite获取地址:“+recent.toString()”);
最近返回;
}
您需要移动光标,在您的代码中,您只获取一行。这样做:
for(int i=0;i<cursor.getCount();i++){
recent.put("pname", cursor.getString(1));
recent.put("pimage", cursor.getString(2));
recent.put("pdesc1", cursor.getString(3));
recent.put("pdesc2", cursor.getString(4));
recent.put("pid", cursor.getString(5));
cursor.moveToNext();
}
public ArrayList<HashMap<String, String>> getRecentDetails() {
ArrayList<HashMap<String,String>> hashHolder = new ArrayList<HashMap<String,String>>();
String selectQuery = "SELECT * FROM " + TABLE_RECENT;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// Move to first row
cursor.moveToFirst();
for(int i=0;i<cursor.getCount();i++) {
HashMap<String, String> recent = new HashMap<String, String>();
recent.put("pname", cursor.getString(1));
recent.put("pimage", cursor.getString(2));
recent.put("pdesc1", cursor.getString(3));
recent.put("pdesc2", cursor.getString(4));
recent.put("pid", cursor.getString(5));
hashHolder.add(recent);
Log.d(TAG, "Fetching address from Sqlite: " + recent.toString());
cursor.moveToNext();
}
cursor.close();
db.close();
// return user
return hashHolder;
}
或者在填充HashMap的循环中,可以操作键:
recent.put("pname"+i, cursor.getString(1));
请参阅HashMap.put()的API:
编辑
您可以这样做:
for(int i=0;i<cursor.getCount();i++){
recent.put("pname", cursor.getString(1));
recent.put("pimage", cursor.getString(2));
recent.put("pdesc1", cursor.getString(3));
recent.put("pdesc2", cursor.getString(4));
recent.put("pid", cursor.getString(5));
cursor.moveToNext();
}
public ArrayList<HashMap<String, String>> getRecentDetails() {
ArrayList<HashMap<String,String>> hashHolder = new ArrayList<HashMap<String,String>>();
String selectQuery = "SELECT * FROM " + TABLE_RECENT;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// Move to first row
cursor.moveToFirst();
for(int i=0;i<cursor.getCount();i++) {
HashMap<String, String> recent = new HashMap<String, String>();
recent.put("pname", cursor.getString(1));
recent.put("pimage", cursor.getString(2));
recent.put("pdesc1", cursor.getString(3));
recent.put("pdesc2", cursor.getString(4));
recent.put("pid", cursor.getString(5));
hashHolder.add(recent);
Log.d(TAG, "Fetching address from Sqlite: " + recent.toString());
cursor.moveToNext();
}
cursor.close();
db.close();
// return user
return hashHolder;
}
public ArrayList getRecentDetails(){
ArrayList hashHolder=新的ArrayList();
String selectQuery=“SELECT*FROM”+表\u最近;
SQLiteDatabase db=this.getReadableDatabase();
Cursor Cursor=db.rawQuery(selectQuery,null);
//移到第一排
cursor.moveToFirst();
对于(inti=0;i您似乎只获取了一行。
您将移动到第一行,并仅从该行获取数据
您需要使用moveToNext()
循环其他行,直到所有行都被读取
抱歉,这里有一个小错误。请将新的哈希映射放入for循环中。我编辑了帖子。。。