第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

讓 Bowler Count 顯示在 League RecyclerView 中

讓 Bowler Count 顯示在 League RecyclerView 中

FFIVE 2023-04-26 17:14:02
我有一個(gè)聯(lián)賽列表,我想在每個(gè)條目中顯示投球手的數(shù)量。例如:我想在列表中每個(gè)聯(lián)賽名稱下顯示每個(gè)列表中投球手的數(shù)量。例如:這是為了快速了解每個(gè)聯(lián)賽。我試圖用下面的代碼來(lái)完成這個(gè):數(shù)據(jù)庫(kù)助手//Getting Number of Bowlers in League    public String leagueBowlerCount(String leagueId)    {                SQLiteDatabase db = this.getReadableDatabase();    String countQuery = "SELECT * FROM " + Bowler.TABLE_NAME + " WHERE " + Bowler.COLUMN_LEAGUE_ID + " = '" + leagueId + "'";    Cursor cursor = db.rawQuery(countQuery, null);    int count = 0;    if(null != cursor)        if(cursor.getCount() > 0){            cursor.moveToFirst();            count = cursor.getInt(0);        }    cursor.close();db.close();return String.valueOf(count);}幾天來(lái)我一直在搞這個(gè),我不明白為什么這行不通。任何幫助將不勝感激。我在想,可能有一種我不知道的更簡(jiǎn)單的方法來(lái)完成這個(gè)。在 logcat 中,我看到以下消息:java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String ca.vogl.r.tenpinbowlingcompanion.database.DatabaseHelper.leagueBowlerCount(java.lang.String)' on a null object reference.正如下面所指出的,錯(cuò)誤似乎發(fā)生在上面列出的 leagueBowlerCount() 中。在對(duì) onBindViewHolder 添加以下內(nèi)容之后:db = new DatabaseHelper (mainActivity)。我看到了我應(yīng)該看到的值,但它們不正確。見下圖。
查看完整描述

1 回答

?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊

我相信您的問題是您返回的是第一個(gè)選定的投球手的 ID 而不是行數(shù)。


也就是你,檢查行數(shù)大于0后,移動(dòng)到第一行,然后使用count = cursor.getInt(0);這將是已提取的第一行的第一列中存儲(chǔ)的值。


嘗試使用:-


public String leagueBowlerCount(String leagueId)

{

    String rv = "0";

    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(Bowler.TABLE_NAME,new String[]{"count(*)"},Bowler.COLUMN_LEAGUE_ID + "=?",new String[]{leagueId},null,null,null);

    if (cursor.moveToFirst()) {

        rv = String.valueOf(cursor.getLong(0));

    }

    cursor.close();

    db.close();

    return rv;

}

這使用聚合函數(shù)計(jì)數(shù)來(lái)提取相應(yīng)聯(lián)賽的行數(shù)。


請(qǐng)注意,以上代碼是原理代碼,尚未經(jīng)過測(cè)試或運(yùn)行,因此可能存在一些錯(cuò)誤。

或者你可以使用: -


public String leagueBowlerCount(String leagueId)

    {


    SQLiteDatabase db = this.getReadableDatabase();

    String countQuery = "SELECT * FROM " + Bowler.TABLE_NAME + " WHERE " + Bowler.COLUMN_LEAGUE_ID + " = '" + leagueId + "'";

    Cursor cursor = db.rawQuery(countQuery, null);


    int count = cursor.getCount();

    cursor.close();

    db.close();

    return String.valueOf(count);

}

關(guān)于您的代碼:-


int count = 0;

if(null != cursor)

    if(cursor.getCount() > 0){

        cursor.moveToFirst();

        count = cursor.getInt(0);

    }

cursor.close();

檢查 null Cursor 是沒有用的,因?yàn)閺?SQLiteDatabase 方法(例如 rawQuery)返回的 Cursor 永遠(yuǎn)不會(huì)為 null。相反,將返回一個(gè)有效的、可能為空的 Cursor。


此外,使用該方法檢查 Cursor 是否有行g(shù)etCount,然后moveToFirst不需要使用,因?yàn)閮H使用if (cursor.moveToFirst) {.....}就足夠了,因?yàn)槿绻麤]有行,該moveToFirst方法將返回 false,因?yàn)闊o(wú)法執(zhí)行移動(dòng)。


查看完整回答
反對(duì) 回復(fù) 2023-04-26
  • 1 回答
  • 0 關(guān)注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)