저는 _id = 0 및 value = "SomeString"열을 가진 1 행 테이블로 나타내는 하나의 상수 문자열로 구성된 컨텐트를 제공하는 사용자 정의 ContentProvider를 작성하고 있습니다. 이 문자열은 데이터베이스에 저장되지 않으므로 위에서 설명한 것과 같이 동작하는 데 필요한 모든 작업을 수행하는 CrossProcessCursor의 하위 클래스를 개발했습니다.사용자 정의 ContentProvider의 fillWindow() 메소드에서 수행 할 작업은 무엇입니까?
는 CrossProcessCursor에 대한 문서는 매우 희소하고 정말 fillWindow() 메소드가 명백한 이상 일을해야하는지 설명하지 않습니다. CursorWindow의 방법의 설명을 바탕으로, 나는 그것을 커버해야한다고 생각하는는 함께 다음 넣어 :
예상대로, 그것은 POS로 호출되는public class MyCursor implements CrossProcessCursor {
...
public void fillWindow(int pos, CursorWindow window) {
if (pos != 0) { // There's only one row.
return;
}
window.clear();
window.allocRow(); // TODO: Error check, false = no memory
window.setNumColumns(2);
window.setStartPosition(0);
window.putLong(0, 0, 0);
window.putString("SomeString", 0, 1);
}
}
= 0 클라이언트 응용 프로그램은 콘텐츠하지만, 클라이언트 응용 프로그램을 요청하는 경우
이Caused by: java.lang.IllegalStateException: UNKNOWN type 48
at android.database.CursorWindow.getLong_native(Native Method)
at android.database.CursorWindow.getLong(CursorWindow.java:380)
at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:108)
at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:194)
at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:248)
at android.database.CursorWrapper.moveToFirst(CursorWrapper.java:86)
...(Snipped)...
사람이이 방법은 클라이언트에 올바른 보이는 행을 반환하는 일을해야 무엇에 도움이 되거 수 : 그것은 첫 번째 (유일한) 행 후 이동하려고 시도 예외가 발생?
감사합니다. 당신이 MatrixCursor
을 확인해야 무슨 일을하는지에 대한
감사합니다. 아직도 CrossProcessCursor 기반 클래스가 실패하는 이유를 알고 싶지만 다른 시간 동안 그 클래스를 떠날 것입니다. – Blrfl