ItemTouchHelper를 사용하여 내 노트 응용 프로그램에 끌어서 놓기 기능을 구현하려고 시도했지만 커서를 사용하는 방법을 파악하는 데 어려움을 겪고 있습니다. 현재 커서 로더와 컨텐트 프로 바이더를 사용하여 데이터베이스에서 저장된 메모 데이터를 가져오고 있으며 어댑터는 표시된대로 반환 된 커서에서 데이터를받습니다.ItemTouchHelper 및 커서를 사용하여 끌어서 놓기 구현하는 방법
public void onBindViewHolder(RecyclerViewAdapter.MyViewHolder holder, int position) {
mCursor.moveToPosition(position);
String title = mCursor.getString(mCursor.getColumnIndex(NotesContract.COL_TITLE));
String body = mCursor.getString(mCursor.getColumnIndex(NotesContract.COL_BODY));
holder.titleText.setText(title);
holder.bodyText.setText(body);
}
오전 데 문제는 내가 드래그하고 드롭 때 목록의 이동 된 항목의 위치를 추적 할 방법을 모르는 것입니다. 커서에서 행의 순서를 변경할 수 없습니다. 어댑터의 데이터 소스가 목록 인 예제 만 보았습니다. 내가 드래그 앤 드롭에 의해 변경된 내용을 반영하기 위해 재정렬 할 수 있도록 내 커서 데이터를 메모 객체 목록에 복사하는 것을 고려했지만 커서 및 커서 로더를 사용하여 얻는 모든 이점을 무력화시키는 것 같습니다. 또한 커서 로더의 로딩이 끝나면 새로운 커서가 원래의 순서대로 다시 표시되고 그에 따라 어댑터가 채워 지므로 새 목록이 손실 될 경우 주문에 대한 변경 사항이 적용됩니다.
이 작업을 수행하는 방법을 알고있는 사람이 있습니까? 아니면 완전히 커서와 로더를 사용하여 잘못된 방식으로 가고 있습니까? 어떤 도움이라도 대단히 감사 할 것입니다. 감사!
해당 튜토리얼을 링크 해 주셔서 감사합니다. 도움이됩니다. 커서를 사용하는 것이 가장 좋은 옵션인지 아닌지 잘 모르겠습니다. 그래서 Udacity에서 코스를 볼 때 커서를 집어 들고 커서 로더를 사용하여 데이터베이스에서 데이터를 검색했습니다. 약간의 독서를 한 후에는 커서가 모든 결과를 메모리에로드하지 않는다고 생각할 때 좋은 방법처럼 보였습니다. 커서를 잘못 가리키면 수정하십시오. 이 작업을 수행하는 더 좋은 방법이 있습니까? 위의 튜토리얼에서 어댑터를 채우는 데이터 소스로 목록이 게시되었습니다. 더 좋은 방법이겠습니까? –
SMcD
드래그가 발생하면 어떻게 항목을 전환해야합니까? 포인터를 통해 DB에서 직접 수행합니까? – XxGoliathusxX
그게 바로 내가 고민하고있는 것입니다. 커서가 검색되면 커서 결과를 조작 할 수 없으므로 항목 순서를 어떻게 바꿀 지 모르겠습니다. – SMcD