2012-11-04 3 views
2

두 개의 개별 객체를 조작해야하는 상황에 처해 있습니다. 나는 두 개의 서로 다른 것들을 결합하여 우리 자신의 커서를 만드는 방법이 있었으면 좋겠다. 그러나 그것이 허용되는지 확실하지 않습니다. 당신이 할 수없는 어딘가를 읽으십시오. 그러나 나는 그것에 대해 특정한 질문을하고 싶었습니다. 그래서 비슷한 상황에 처한 다른 사람들에게 약간의주의를 기울였습니다.커서를 확장하거나 구현할 수 있습니까?

답변

1

나는 두 개의 사람

당신이 MergeCursor를 시도 결합하여 우리 자신의 커서를 만들려면 어떻게든지이되었다 기대했다? 인용 부호 the documentation :

커서 배열을 단일 선형 커서로 나타낼 수있는 편리한 클래스입니다. 표시되는 커서의 스키마는 전적으로 MergeCursor의 작성자에게 달려 있으며 원하는 경우 다를 수 있습니다. getColumns, getColumnIndex 등을 호출하면 MergeCursor가 현재 가리키고있는 행의 값이 반환됩니다. 난, 당신의 목표는 AdapterView 어떤 형태 모두 Cursors를 표시하는 경우

또한, 당신은 my MergeAdapter을 사용할 수 있고 당신이 당신의 구체적인 사용 사례에 대한 해결책을 발견하는 경우

+0

OOOO, 나는 몰랐다 때문에 그것이 존재하는 것을 시도하지 않았다 아니. 없다 나는 무언가를 찾으려고 노력했지만 그것에 관해서는별로 논란의 여지가 없다. 당신 덕분에, 정확히 내가 찾고 있었던 것이 었습니다! 나는'CursorWrapper'를 사용하여 내 자신을 만들려고 했었지만 이것은 훨씬 더 잘 작동합니다 :) 감사합니다! – Andy

+0

명확히하기 위해, 나는 문서를보고있다. 그러나 그것은'getCount'가 모든 커서의 수, 커서를 지닌 배열 등을 가져올지를 설명하지 않는다. 나는 그것이 전체의 길이라고 가정한다. 커서가 추가 되었습니까? 또한 커서 배열의 각 인덱스를 순서대로 따라 가면서 별도의 작업없이 순서대로 각 커서를 살펴볼 것이라고 가정해야합니까? 내가 사용한 적이 없는지 확인하고 싶었어. 도움에 감사드립니다. – Andy

+0

@Andy : "전체 길이라고 가정합니다 ..."- 예, 소스 코드에서 볼 수 있듯이 : https://android.googlesource.com/platform/frameworks/base/+/refs /heads/master/core/java/android/database/MergeCursor.java "커서의 각 인덱스를 통과한다고 가정할까요?"- "인덱스"가 "위치"를 의미하면 예 (다시 소스를 사용하십시오). – CommonsWare

1

심지어 Adapter 수준에서 일을 연결 여전히 주요 질문에 답하고 싶습니다.

예 자신의 커서를 구현할 수 있습니다.

Cursor은 공용 인터페이스이며 모두가 구현할 수 있습니다.

그러나 구현해야 할 많은 방법이 있습니다.

AbstractCursor 또는 AbstractWindowedCursor을 기본 클래스로 사용하면 오버 헤드를 줄일 수 있습니다.

사용할 수있는 구체적인 구현을 확장 할 수도 있습니다.

CrossProcessCursor, CrossProcessCursorWrapper, CursorWrapper, MatrixCursor, MergeCursor, MockCursor, SQLiteCursor

+0

감사합니다. 'AbstractCursor'에 대해서도 주목했습니다. 그러나 두 개의 커서 내부에있는 값을 단일 커서로 가져 오는 방법은 무엇입니까? AbstractCursor를보고 있지만 요소가 어디에 있는지는 알 수 없습니다. 나는 그것이 사용하는 모든 방법을 보지만 그 요소를 담고있는 것은 아무것도 없다. – Andy

관련 문제