2016-08-03 3 views
3

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); 
} 

오전 데 문제는 내가 드래그하고 드롭 때 목록의 이동 된 항목의 위치를 ​​추적 할 방법을 모르는 것입니다. 커서에서 행의 순서를 변경할 수 없습니다. 어댑터의 데이터 소스가 목록 인 예제 만 보았습니다. 내가 드래그 앤 드롭에 의해 변경된 내용을 반영하기 위해 재정렬 할 수 있도록 내 커서 데이터를 메모 객체 목록에 복사하는 것을 고려했지만 커서 및 커서 로더를 사용하여 얻는 모든 이점을 무력화시키는 것 같습니다. 또한 커서 로더의 로딩이 끝나면 새로운 커서가 원래의 순서대로 다시 표시되고 그에 따라 어댑터가 채워 지므로 새 목록이 손실 될 경우 주문에 대한 변경 사항이 적용됩니다.

이 작업을 수행하는 방법을 알고있는 사람이 있습니까? 아니면 완전히 커서와 로더를 사용하여 잘못된 방식으로 가고 있습니까? 어떤 도움이라도 대단히 감사 할 것입니다. 감사!

답변

1

정렬 순서를 추적하기 위해 테이블에 sort_order라는 열을 추가하여이 작업을 수행했습니다. 드래그 앤 드롭 할 때 itemTouchHelper.SimpleCallback의 onMove 메소드에서 sort_order를 업데이트하십시오.

0

드래그 앤 드롭 및 기각 슬쩍을 구현하는 방법에 좋은 자습서 당신은 here

정확하게 당신이 커서 그 무엇이 필요합니까 찾을 수 있습니까? 특정 질문이있는 경우 그냥 의견을 추가하십시오. 이 기능으로 많은 일을했습니다!

+0

해당 튜토리얼을 링크 해 주셔서 감사합니다. 도움이됩니다. 커서를 사용하는 것이 가장 좋은 옵션인지 아닌지 잘 모르겠습니다. 그래서 Udacity에서 코스를 볼 때 커서를 집어 들고 커서 로더를 사용하여 데이터베이스에서 데이터를 검색했습니다. 약간의 독서를 한 후에는 커서가 모든 결과를 메모리에로드하지 않는다고 생각할 때 좋은 방법처럼 보였습니다. 커서를 잘못 가리키면 수정하십시오. 이 작업을 수행하는 더 좋은 방법이 있습니까? 위의 튜토리얼에서 어댑터를 채우는 데이터 소스로 목록이 게시되었습니다. 더 좋은 방법이겠습니까? – SMcD

+0

드래그가 발생하면 어떻게 항목을 전환해야합니까? 포인터를 통해 DB에서 직접 수행합니까? – XxGoliathusxX

+0

그게 바로 내가 고민하고있는 것입니다. 커서가 검색되면 커서 결과를 조작 할 수 없으므로 항목 순서를 어떻게 바꿀 지 모르겠습니다. – SMcD