0

カーソルを使用してデータを取得しようとしていますが、取得しようとしているデータの行と列がnullを返しているため、それが正しいかどうかは本当にわかりません。

これが私がデータを保存している場所です:

   JSONArray badges = jsonObject.getJSONArray("badges");
            Log.i("badges length:",  badges.length() + "");
            for(int i = 0; i < badges.length(); i++){
                JSONObject currentBadge = badges.getJSONObject(i);
                Log.i("badge image_url:",  currentBadge.getString("image_url") + "");
                db.updateBadgesRecord(i, currentBadge.getString("id"), currentBadge.getString("name"), currentBadge.getString("description"), currentBadge.getString("image_url"), currentBadge.getString("club_id"), currentBadge.getString("created_at"));
            }

Log.i は、18 個のオブジェクト (行) があることを示しています。

updateBadgesRecord 関数は次のとおりです。

public boolean updateBadgesRecord(long rowId, String id, String name, String description, String image_url, String club_id, String created_at) 
    {
        ContentValues args = new ContentValues();
        if(id != null){
        args.put(KEY_BADGES_ID, id);
        }
        if(name != null){
        args.put(KEY_BADGES_NAME, name);
        }
        if(description != null){
        args.put(KEY_BADGES_DESCRIPTION, description);
        }
        if(image_url != null){
        args.put(KEY_BADGES_IMAGEURL, image_url);
        }
        if(club_id != null){
        args.put(KEY_BADGES_CLUBID, club_id);
        }
        if(created_at != null){
        args.put(KEY_BADGES_CREATEDAT, created_at);
        }

        return db.update(DATABASE_TABLE_BADGES, args, KEY_ROWID + "=" + rowId, null) > 0;
    }

保管していると思いますが、よくわかりません。これは私がそれを表示しようとしている方法です:

public void activateBadgeList(){
        for(int i = 0; i < badgeButtons.length; i++){
            if(true){
            badgeButtons[i].setActivated(true);
            badgeButtons[i].setAlpha(1.0f);
            db.open();


            Cursor c = db.getBadgeRecord(i);
            String image_url = null;
            if (c.moveToFirst()){
                   while(!c.isAfterLast()){
                      image_url = c.getString(c.getColumnIndex(KEY_BADGES_IMAGEURL));
                      // do what ever you want here
                      c.moveToNext();
                   }
                }
                c.close();
            if(image_url != null){
            Log.i("image url", image_url);
            } else {
            Log.e("image url", "image url is null");    
            }
            badgeButtons[i] = UrlImageViewHelper.setUrlDrawable(badgeButtons[i], image_url);
            db.close();
            }
        }
    }

BadgeButtons の長さは 16 であるため、バッジを簡単に設定できることがわかります..しかし....画像の URL が null を返しています (「コンソールで画像の URL が 18 回 null です」と表示されます)。ここに私の getBadgeRecord 関数があります:

public Cursor getBadgeRecord(long rowId) throws SQLException 
{
    Cursor mCursor =
            db.query(true, DATABASE_TABLE_BADGES, new String[] {KEY_ROWID,
            KEY_BADGES_ID, KEY_BADGES_NAME, KEY_BADGES_DESCRIPTION, KEY_BADGES_IMAGEURL, KEY_BADGES_CLUBID, KEY_BADGES_CLUBID}, 
            KEY_ROWID + "=" + rowId, null, null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}

私は何を間違っていますか?助けてください!私は初心者です。

ありがとうございました!

4

2 に答える 2