По щелчку X семестра я хочу, чтобы мое приложение загружало классы, связанные с этим c семестром, что я пытаюсь сделать с помощью следующего фрагмента кода:
public void openSemestersActivity() {
final Intent semester = new Intent(this, SemesterActivity.class);
semesterListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// This works if nothing is deleted. If something is deleted we would have to add another +1 to the position
semester.putExtra("semester", db.getSemesterNameString(position + 1));
Log.d("Semester Name", db.getSemesterNameString(position + 1));
startActivity(semester);
}
});
}
Теперь я хочу загрузить классы, связанные с указанным c семестром в SemesterActivity
, что я пытаюсь сделать с помощью следующего кода:
// Retrieving the Extra and determining the semester we want to load
Intent myIntent = getIntent();
String semester = myIntent.getStringExtra("semester");
// Creating the Database and loading the ListView
db = new DataBaseHelperC(this);
myCourses.addAll(db.getAllCoursesForThisSemester(semester));
customCourseAdapter = new CourseAdapter(getApplicationContext(), R.layout.course_row, myCourses);
courseListView.setAdapter(customCourseAdapter);
customCourseAdapter.notifyDataSetChanged();
Это метод, расположенный в моем DatabaseHelper
классе, который должен получить все курсы для указанного c семестра:
public List<Course> getAllCoursesForThisSemester(String semester) {
List<Course> courses = new ArrayList<>();
// Select all query
String selectQuery = "SELECT * FROM " + Course.TABLE_NAME + " ORDER BY " + Course.COLUMN_ID + " ASC";
SQLiteDatabase db = this.getWritableDatabase();
@SuppressLint("Recycle") Cursor cursor = db.rawQuery(selectQuery, null);
// Looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Course course = new Course();
course.setNameOfCourse(cursor.getString(cursor.getColumnIndex(Course.COLUMN_COURSE)));
course.setCodeOfCourse(cursor.getString(cursor.getColumnIndex(Course.COLUMN_COURSECODE)));
course.setCreditsOfCourse(cursor.getString(cursor.getColumnIndex(Course.COLUMN_COURSECREDITS)));
course.setNameOfBackground(cursor.getString(cursor.getColumnIndex(Course.COLUMN_BACKGROUND)));
course.setId(cursor.getInt(cursor.getColumnIndex(Course.COLUMN_ID)));
courses.add(course);
}
while (cursor.moveToNext());
}
// Close db connection
db.close();
return courses;
}
Я передаю String semester
в качестве параметра, но не могу выяснить, как на самом деле использовать этот параметр, чтобы получить курсы только для указанного c семестра. Это мой первый раз, когда я работаю с базой данных, и стоит отметить, что мне сложно с ней работать, и я еще не освоил ее, поэтому любая помощь будет очень признательна, так как я застрял здесь на примерно 2 недели.
Прямо сейчас, используя код, который у меня есть, если я добавлю курс в X семестр, а затем открою Y семестр, Курсы, добавленные в семестр X , загружаются и в семестр Y . Это то, что я пытаюсь исправить с помощью этого метода, который получает параметр String semester
.