Я пытаюсь запросить в моей базе данных SQLite курсы, которые имеют COURSE_TERM_ID, который соответствует выбранному termId из предыдущего действия.Я передаю termId в CourseActivity через Intent и использую этот идентификатор в массиве selectionArgs String.
Строковый массив selectionArgs используется в качестве параметра в методе getContentResolver.query()
.
Кажется, запрос возвращает правильные результаты из моей базы данных, и я могу распечатать их на консоли после выполнения запроса.Однако, когда я настроил захват моего ListView и установил адаптер с помощью моего курсора, никакая информация не будет привязана к ListView.Я что-то здесь упускаю?
Это мой onCreate
метод для курса деятельности
public class CourseActivity extends AppCompatActivity implements
LoaderManager.LoaderCallbacks<Cursor> {
private static final int EDITOR_REQUEST_CODE = 1000;
private courseCursorAdaptor cursorAdapter;
private String[] selectionArgs = {""};
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_course);
ListView list = this.findViewById(R.id.courseList);
long termId;
Intent intent = getIntent();
Uri uri = intent.getParcelableExtra(CourseProvider.CONTENT_ITEM_TYPE);
termId = getIntent().getExtras().getLong("itemId");
String stringTermId = Long.toString(termId);
selectionArgs[0] = stringTermId;
System.out.println("Using the following selection: " + termId);
Cursor cursor = getContentResolver().query(uri, DBOpenHelper.ALL_COURSE_COLUMNS,DBOpenHelper.COURSE_TERM_ID, selectionArgs, DBOpenHelper.COURSE_ID + " ASC");
//Verify that the cursor is showing the correct query results
Integer cursorCount = cursor.getCount();
System.out.println("Cursor count - " + cursorCount);
//initialize the cursorAdaptor
cursorAdapter = new courseCursorAdaptor(this, cursor, 0);
//set the adapter
list.setAdapter(cursorAdapter);
//print each result to verify once again that cursor is still showing correct results
int index = cursor.getColumnIndex(DBOpenHelper.COURSE_NAME);
if(cursor != null){
while(cursor.moveToNext()){
System.out.println(cursor.getString(index));
}
}
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(CourseActivity.this, editCourseActivity.class);
Uri uri = Uri.parse(CourseProvider.COURSE_CONTENT_URI + "/" + id);
intent.putExtra(CourseProvider.CONTENT_ITEM_TYPE, uri);
startActivityForResult(intent, EDITOR_REQUEST_CODE);
}
});
LoaderManager.getInstance(this).initLoader(0, null, this);
}
Это мой адаптер курсора
public class termCursorAdaptor extends CursorAdapter {
public termCursorAdaptor(Context context, Cursor c, int flags) {
super(context, c, flags);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return LayoutInflater.from(context).inflate(
R.layout.term_list_item, parent, false
);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
String termText = cursor.getString(
cursor.getColumnIndex(DBOpenHelper.TERM_TITLE));
int pos = termText.indexOf(10);
if(pos != -1){
termText = termText.substring(0, pos) + "...";
}
TextView tv = view.findViewById(R.id.tvTerm);
tv.setText(termText);
}
}
Это мой курсActivity XML
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".CourseActivity">
<ListView
android:id="@+id/courseList"
android:layout_width="417dp"
android:layout_height="605dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fabAddCourse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1100dp"
android:layout_marginEnd="35dp"
android:layout_marginRight="35dp"
android:layout_marginBottom="33dp"
android:onClick="openEditorForNewCourse"
android:src="@drawable/ic_action_ic_bell_outline"
app:backgroundTint="@color/primary"
app:layout_constraintBottom_toTopOf="@+id/courseList"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:rippleColor="@color/primary_dark" />
</android.support.constraint.ConstraintLayout>
Это мой адаптер курсора XML
<?xml version="1.0" encoding="utf-8" ?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:padding="4dp">
<ImageView
android:id="@+id/imageDocIcon"
android:layout_width="36dp"
android:layout_height="36dp"
android:src="@drawable/ic_format_list_bulleted_black_48dp"/>
<TextView
android:id="@+id/tvTerm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginStart="12dp"
android:layout_marginLeft="12dp"
android:layout_marginEnd="1dp"
android:layout_marginRight="1dp"
android:layout_toEndOf="@+id/imageDocIcon"
android:layout_toRightOf="@+id/imageDocIcon"
android:singleLine="true"
android:text="Dummy Text"
android:textColor="@color/term_item_text"
android:textSize="18sp" />
</RelativeLayout>
В данный момент я не вижу и сообщений об ошибках, а просто пустое действие, когда загружается действие курса.Любая помощь или направление приветствуется