Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLite只显示一行_Android_Android Sqlite - Fatal编程技术网

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循环中。我编辑了帖子。。。