gpt4 book ai didi

java - ListView 仅显示数据库中匹配条件集的 4 条记录中的 3 条

转载 作者:行者123 更新时间:2023-12-02 10:02:36 25 4
gpt4 key购买 nike

我是一名 A Level 学生,目前正在进行 A Level 计算机科学控制评估。我正在 Android Studio 中工作,使用 Java、XML 和 SQLite,但我以前从未使用过这些。我正在构建一个 Scout Manager 应用程序。

我目前正在努力显示 Activity 详细信息,特别是受邀参加 Activity 的每个侦察兵的姓名和部分,这将显示在 ListView 中。唯一的问题是,虽然数据库中已邀请 4 名球探参加此 Activity ,但仅显示 3 名 - 或者,显示的球探太少。

应该注意的是, Activity 、邀请和球探有单独的表格。邀请表将正在参加的 Activity 的 ID 以及正在参加该 Activity 的球探的 ID 相匹配 - 因此,我会找到某个 Activity 的所有邀请,然后是参加该 Activity 的各个球探,然后再显示该 Activity 的详细信息侦察兵。

以下是用于从我的databaseHandler 类的数据库获取给定事件的邀请的代码:

public Cursor getEventInvites(int sessionid) {
String[] columns={COLUMN_INID + " AS " + BaseColumns._ID, COLUMN_SEID, COLUMN_SCID};
String selection=COLUMN_SEID + " =? ";
String[] selectionArgs={String.valueOf(sessionid)};
Cursor cursor=db.query(TABLE_INVITES, columns, selection, selectionArgs, null, null, null);
return cursor;
}

以下是用于在列表框中显示详细信息的代码:

ListView scoutslist = findViewById(R.id.listScouts);
scoutdetailslist=new ArrayList<String>();
scoutadapter=new ArrayAdapter<String>(context, android.R.layout.simple_list_item_multiple_choice, scoutdetailslist);
//ArrayList<int>
Cursor invites;
invites=DatabaseHandler.getEventInvites(sessionid);
invites.moveToFirst();
try {
while (invites.moveToNext()) {
int ScoutID = invites.getInt(invites.getColumnIndex(DatabaseHandler.COLUMN_SCID));
Cursor scout = DatabaseHandler.getScout(ScoutID);
String forename = scout.getString(scout.getColumnIndex(DatabaseHandler.COLUMN_FNAME));
String surname = scout.getString(scout.getColumnIndex(DatabaseHandler.COLUMN_LNAME));
String section = scout.getString(scout.getColumnIndex(DatabaseHandler.COLUMN_SECTION));
String ScoutBasicDetails = forename + " " + surname + ", " + section;
scoutdetailslist.add(ScoutBasicDetails);
}
} finally {
invites.close();
}
scoutslist.setAdapter(scoutadapter);

这是用于从数据库获取侦察兵详细信息的代码。

public Cursor getScout(int scoutid) {
String[]columns={COLUMN_SCID, COLUMN_FNAME, COLUMN_LNAME, COLUMN_DOB, COLUMN_SECTION, COLUMN_SEX, COLUMN_ADD1, COLUMN_ADD2, COLUMN_CITY, COLUMN_POST, COLUMN_RELIGION, COLUMN_ENAME, COLUMN_EHOME, COLUMN_EMOB, COLUMN_EEMAIL, COLUMN_MED, COLUMN_ALL, COLUMN_TET, COLUMN_SWIM, COLUMN_SCHOOL, COLUMN_PHOTO, COLUMN_MOVE};
String selection = COLUMN_SCID + " =? ";
String[] selectionArgs={String.valueOf(scoutid)};
Cursor cursor=db.query(TABLE_SCOUTS, columns, selection, selectionArgs, null, null, null);
if (cursor!=null&&cursor.moveToFirst()) {
cursor.moveToFirst();
} else {
cursor=null;
}
return cursor;
}

任何帮助将不胜感激 - 另外,我对此很陌生,而且很累,所以如果我遗漏了重要细节或不清楚,请随时发表评论并要求我修改问题.

最佳答案

您正在移至第一项,然后立即移至下一项(从而跳过第一项):

invites.moveToFirst();
try {
while (invites.moveToNext()) {

考虑一个 do while 循环,仅当 moveToFirst() 调用成功时才执行。

关于java - ListView 仅显示数据库中匹配条件集的 4 条记录中的 3 条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55525042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com