实现时onLoadFinished()
, 它需要 moveToFirst()
运行良好,但为什么在实现 bindView()
时不需要这样做?对于 CursorAdapter
?以及何时使用它?
onLoadFinished:
@Override
public void onLoadFinished(@NonNull Loader loader, Cursor data) {
if (data.moveToFirst()) {
int nameColumnIndex = data.getColumnIndexOrThrow(PetEntry.COLUMN_PET_NAME);
int breedColumnIndex = data.getColumnIndexOrThrow(PetEntry.COLUMN_PET_BREED);
mNameEditText.setText(data.getString(nameColumnIndex));
mBreedEditText.setText(data.getString(breedColumnIndex));
}
}
绑定(bind) View :@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView name = view.findViewById(R.id.name);
TextView summary = view.findViewById(R.id.summary);
String nameString = cursor.getString(cursor.getColumnIndexOrThrow(PetEntry.COLUMN_PET_NAME));
String summaryString = cursor.getString(cursor.getColumnIndexOrThrow(PetEntry.COLUMN_PET_BREED));
name.setText(nameString);
summary.setText(summaryString);
}
最佳答案
该 API 在 CursorAdapter.bindView 中明确声明:@param cursor The cursor from which to get the data. The cursor is already moved to the correct position.
所以moveToFirst
已经为你完成了。需要该操作来推进从数据库查询返回的记录。如果没有找到记录,则 moveToFirst 将根据 API 描述返回 false:Move the cursor to the first row. This method will return false if the cursor is empty.
onLoadFinished 不是 CursorAdapter 的成员,因此不适合这样做。
问候,迈克
关于java - 为什么我们不在 bindView 中使用 moveToFirst()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64829157/