드래그 앤 드롭에서 DB에서 가져온 값을 listview에 불러와서 값하나에 터치 했을시 롱 클릭값을 먼저 먹게 하는 방법이 있나요?\드래그 앤 드롭은 되는데 스크롤바가 터치 이벤트 때문에 안먹혀서 제일 밑으로 내려 갈 수가 없네요.
listveiw값들이 롱 클릭했을시에만 드래그 앤 드롭 할때이동 시키고 싶은데 바로 이동이 되서 질문을 드립니다.
import java.io.File;
import java.util.ArrayList;
import com.Daekyo.ListView.ListViewDnD.DragListener;
import com.Daekyo.ListView.ListViewDnD.DropListener;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Environment;
import android.text.method .Touch;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class ListViewActivity extends ListActivity implements ListViewDnD.DragListener, ListViewDnD.DropListener{
private ArrayList<String> data = new ArrayList<String>();
private ListViewDnD lstInfoType;
private boolean isDnd = false;
private ArrayAdapter<String> mAdapter;
ImageView imageView;
View footer;
SQLiteDatabase mDb;
TextView mText;
File extSt = Environment.getExternalStorageDirectory();
final String SDPATH = extSt.getAbsolutePath();
String mDBFilePath = SDPATH + "/DaekyoMOSDB.db";
private Button saveStart, exitStart;
public ListViewActivity(){
super();
mDb = SQLiteDatabase.openDatabase(mDBFilePath, null, SQLiteDatabase.CREATE_IF_NECESSARY);
Cursor cursor = null;
cursor = mDb.rawQuery("SELECT NAME1, STRAS FROM Table", null);
int i=1;
while (cursor.moveToNext()) {
String NAME1 = cursor.getString(0);
String STRAS = cursor.getString(1);
String Result = (NAME1 + " " + STRAS + "\n");
data.add(i+"번째 "+Result);
Log.i("test", Result);
i++;
}
cursor.close();
mDb.close(); // DB 끄기
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
saveStart = (Button)findViewById(R.id.save);
exitStart = (Button)findViewById(R.id.exit);
// d = (Button)findViewById(R.id.d);
saveStart.setOnClickListener(mClickListener);
exitStart.setOnClickListener(mClickListener);
lstInfoType = (ListViewDnD)this.findViewById(android.R.id.list);
lstInfoType.setHorizontalScrollBarEnabled(true);
lstInfoType.setVerticalScrollBarEnabled(true);
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
setListAdapter(mAdapter);
lstInfoType.setOnLongClickListener(new OnLongClickListener(){
@Override
public boolean onLongClick(View v) {
// lstInfoType.setAdapter(mAdapter);
// setListAdapter(mAdapter);
lstInfoType.setDragListener(this);
lstInfoType.setDropListener(.this);
// registerForContextMenu(getListView());
// v.performHapticFeedback(0, View.HAPTIC_FEEDBACK_ENABLED);
// mAdapter.notifyDataSetChanged();
Log.i("drag", data.toString());
return true;
}
});
// lstInfoType.setDragListener(this);
// lstInfoType.setDropListener(this);
}
public void drag(int from, int to) {
if(!isDnd){
isDnd = true;
Log.i("Drag and Drop : drag", "from : " + from + ", to : " + to);
}
}
public void drop(int from, int to) {
if(isDnd){
Log.i("Drag and Drop : drop", "from : " + from + ", to : " + to);
if(from == to)
return;
String item = data.remove(from);
data.add(to, item);
isDnd = false;
mAdapter.notifyDataSetChanged();
}
}
private OnClickListener mClickListener = new OnClickListener(){
public void onClick(View view){
if(view == saveStart){
Toast.makeText(ListViewActivity.this, "노선변경이 저장 되었습니다.", Toast.LENGTH_SHORT).show();
}else if(view == exitStart){
// finish();
System.exit(0);
}
}
};
}



