나는 커서를 사용하여 가로 스 와이프를하려고하는데, 나는 단지 grokking하지 않고, 여기 누군가가 나를 이해하도록 도울 수있다.다른 활동으로 커서를 이동해도 안전합니까?
항목 목록을 보여주는 활동이 있습니다. 사용자 지정 CursorAdapter
에 의해 지원되는 ListView
을 사용하고 해당 어댑터는 LoaderCallback
에 의해 관리됩니다. 이것은 모두 표준적인 것입니다.
사용자가 목록에서 항목을 클릭하면 해당 항목에 대한 자세한 정보를 표시하려고합니다. 현재 선택한 항목의 ID를 전달하여 새로운 활동을 시작합니다. 이 활동은 데이터베이스에서 항목에 대한 정보를로드합니다. 다시 표준 물건.
이제 항목 목록 사이를 오가며 항목을 클릭하면 해당 항목에 대한 자세한 정보가 표시됩니다. 최상의 사용자 환경이 아니므로 사용자가 정보를 표시하기 위해 항목을 클릭하도록 허용하는 것이 좋습니다 목록에서 다음 또는 이전 항목에 대한 세부 정보를 스 와이프 할 수 있습니다.
그래서 내가 ListView
에서 항목을 클릭하면 ViewPager
을 포함하는 활동을 시작해야한다고 가정합니다. 이 ViewPager
은 적절한 위치에서 뷰를 가져 오는 PagerAdapter에 의해 지원됩니다.
목록 활동에 사용 된 CursorAdapter
을 세부 활동으로 전달한 다음을 구현하여보기 호출기의 현재 항목에 대한 세부 정보를 표시하는 커서를 트래버스합니다. 이 간단한데 : getItem(pos)
는 등, 커서에서 조각을 만들 cursor.moveToPosition(pos)
을 부를 것이다
그러나 (1) 나는 그것을 할 수 있다고 생각하지 않기 때문에, 활동에 CursorAdapter
을 전달하는 방법을 잘 모르겠어요 (2) 라이프 사이클을 관리하기 위해 첨부 된 LoaderCallbacks
이 없으므로 어쨌든 CursorAdapter를 다른 액티비티로 전달하는 것을 주저합니다.
가능한 한 가지 해결책은 새 활동을 시작하고 해당 활동이 새 활동을 수행하여 목록 활동에있는 커서와 동일한? 서를 얻는 것입니다. 예를 들어 목록 활동은 "title = foo"와 일치하는 항목을 표시했을 수 있으므로 항목 10을 클릭하면 항목 10에 대한 정보를 표시하는 새로운 세부 활동을 만들지 만 "title = foo"검색을 수행하여 커서를 수평 스 와이프에 사용할 수 있습니다. 그러나 이것은 동일한 검색을 두 번 수행한다는 것을 의미합니다. 한 번은 목록보기에서, 한 번은 페이징보기에서 수행합니다. 검색에 시간이 걸리는 경우 문제가 될 수 있습니다.
커서를 일부 전역 정적 영역 (예 : Application
)에 저장할 수도 있지만 위험이 따르는 것처럼 보입니다.
또한 Parcelable
이 있지만 이것은 한 쪽에서 커서를 직렬화하고 다른 쪽에서 역 직렬화한다고 가정합니다. 큰 목록의 경우 새 커서를 얻으려면 검색을 다시 수행하는 것이 더 효율적일 수 있습니다.
나는 이것이 일반적인 시나리오라고 확신하므로 여러 액티비티에서 커서를 관리하거나 모범 사례가 더 나은지 알고 싶습니다.
목록 항목을 백업하고 색인을 정보 활동에 전달할 수있는 데이터베이스를 만들 수 없습니까? 또는 목록보기 위에 숨겨진보기를 만들어 선택한 항목에 대한 정보를 표시하고 사용자가 목록보기로 되돌아 가려 할 때 숨길 수 있습니다. – Rawr
의견을 주셔서 감사합니다. 기존 활동의 기존 목록보기 위에 세부보기를 만드는 제안에 흥미가 있습니다. 별도의 활동을 사용하는 대신 여기에서는'onListItemClicked' 핸들러의 레이아웃에서리스트 뷰를 제거한 다음 레이아웃에'ViewPager'를 추가한다고 가정합니다. 까다로운 문제는 원래 목록보기로 돌아가려면 뒤로 단추를 처리하고 세부보기는 조각보기를 사용하여 목록보기와 함께 존재할 때 가로 모드에서 수행 할 작업입니다. 그러나 나는 이것을 좀 더 생각해 볼 것입니다. –
또한 데이터베이스를 사용하고 있습니다. 별도의 세부 작업을 사용한다면 (이미 제안한) 하나의 옵션은 동일한 검색을 다시 수행하고 목록 항목의 위치에 따라'cursor.moveToPosition() '을 호출하는 것입니다. 나는이 옵션을 좋아하지 않는다. 관련 검색 결과와 함께 동일한 검색을 두 번 수행한다는 것을 의미하기 때문이다. –