저는 CommonsGuy의 드래그 앤 드롭 예제를 사용하고 있습니다. 기본적으로 Android 메모장 예제와 통합하려고합니다. 2 개의 서로 다른 드래그 아웃간단한 커서를 사용하여 드래그 앤 드롭
N 내가 그들 모두 내가 데이터베이스에서 목록을 받고 간단한 커서 어댑터를 사용하고 같은 정적 문자열 배열을 사용한 본 적이 예를 놓습니다.
그래서 내 질문에 어떻게 문자열 배열에 간단한 커서 어댑터에서 결과를 얻을 수 있지만 목록 항목을 클릭 할 때 행 id를 반환 할 수 있도록 메모를 편집하는 새 활동에 전달할 수 있습니다.
여기 내 코드입니다 :
Cursor notesCursor = mDbHelper.fetchAllNotes();
startManagingCursor(notesCursor);
// Create an array to specify the fields we want to display in the list (only NAME)
String[] from = new String[]{WeightsDatabase.KEY_NAME};
// and an array of the fields we want to bind those fields to (in this case just text1)
int[] to = new int[]{R.id.weightrows};
// Now create a simple cursor adapter and set it to display
SimpleCursorAdapter notes =
new SimpleCursorAdapter(this, R.layout.weights_row, notesCursor, from, to);
setListAdapter(notes);
그리고 저는 여기에 그 일을하기 위해 노력하고있어 코드입니다.
public class TouchListViewDemo extends ListActivity {
private static String[] items={"lorem", "ipsum", "dolor", "sit", "amet",
"consectetuer", "adipiscing", "elit", "morbi", "vel",
"ligula", "vitae", "arcu", "aliquet", "mollis",
"etiam", "vel", "erat", "placerat", "ante",
"porttitor", "sodales", "pellentesque", "augue", "purus"};
private IconicAdapter adapter=null;
private ArrayList<String> array=new ArrayList<String>(Arrays.asList(items));
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
adapter=new IconicAdapter();
setListAdapter(adapter);
TouchListView tlv=(TouchListView)getListView();
tlv.setDropListener(onDrop);
tlv.setRemoveListener(onRemove);
}
private TouchListView.DropListener onDrop=new TouchListView.DropListener() {
@Override
public void drop(int from, int to) {
String item=adapter.getItem(from);
adapter.remove(item);
adapter.insert(item, to);
}
};
private TouchListView.RemoveListener onRemove=new TouchListView.RemoveListener() {
@Override
public void remove(int which) {
adapter.remove(adapter.getItem(which));
}
};
class IconicAdapter extends ArrayAdapter<String> {
IconicAdapter() {
super(TouchListViewDemo.this, R.layout.row2, array);
}
public View getView(int position, View convertView,
ViewGroup parent) {
View row=convertView;
if (row==null) {
LayoutInflater inflater=getLayoutInflater();
row=inflater.inflate(R.layout.row2, parent, false);
}
TextView label=(TextView)row.findViewById(R.id.label);
label.setText(array.get(position));
return(row);
}
}
}
나는 내가 많이 요구하고있어 알고 있지만 올바른 방향으로 점은 꽤 도움이 될 것이다! 감사
업데이트 : 원래 이름이 포함 된 문자열 배열을 만들었습니다. 어떤 위치가 변경되었는지 찾기 위해 드래그 앤 드롭 배열에 대한 상호 참조를 만든 다음 해당 변경 내용으로 rowId 배열을 업데이트합니다. 추악하지만 작동합니다. 이제는 더 효율적으로 실행되도록 노력하겠습니다. – Cameron