Я учусь на уровне и в настоящее время прохожу аттестацию по компьютерным наукам. Я работаю в Android Studio, используя Java, XML и SQLite, ни один из которых я не использовал раньше. Я создаю приложение Scout Manager.
В настоящее время я работаю над отображением сведений о событии, в частности имен и разделов каждого разведчика, который был приглашен на событие, и это должно отображаться в ListView. Единственная проблема заключается в том, что, хотя 4 скаута были приглашены на это событие в базе данных, отображаются только 3 - или отображается слишком мало скаутов.
Следует отметить, что существуют отдельные таблицы для событий, приглашений и разведчиков. Таблица приглашений совпадает вместе с идентификатором посещаемого мероприятия и идентификатором скаута, который его посещает - поэтому я нахожу все приглашения на определенное событие, а затем отдельных скаутов, присутствующих на мероприятии, перед отображением сведений о мероприятии. разведчик.
Вот код, используемый для получения приглашений для данного события из базы данных, из моего класса 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;
}
Вот код, используемый для отображения деталей в ListBox:
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;
}
Буду признателен за любую помощь - также, я новичок в этом, и довольно устал, поэтому, если я пропустил важные детали или был неясен, пожалуйста, не стесняйтесь оставить комментарий и попросить меня изменить вопрос .