리스트를 꾹 눌러서 삭제하면 그 position에 맞는 id값을 가진 데이터를 삭제하게 구현했는데요
생각해보면 방법이 틀린것같아서요
position은 0부터 시작해서 삭제할 때 position + 1을 주어서 삭제하게했습니다
pos : 0 1 2
id : 1 2 3 이렇게 있을 때 만약 2번째를 삭제하면
pos : 0 1
id: 1 3 이렇게 되는거같은데 제 생각이 맞는지는 모르겠습니다.
몇번삭제하고나면 마지막엔 하나가 꼭 안지워지더라고요
position값과 id값이 다르게 지워지는거 같은데
좋은방법 없을까요??
mListView.setAdapter(mAdapter);
mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent,
View view, int position, long id) {
Log.i(TAG,"cursor position =" + mCursor.getPosition());
boolean result = mDbOpenHelper.deleteColumn(position + 1);
Log.i(TAG, "result = " + result);
if (result) {
mInfoArr.remove(position);
mAdapter.setArrayList(mInfoArr);
mAdapter.notifyDataSetChanged();
}
else {
Toast.makeText(MainActivity.this, "INDEX를 확인해 주세요",
Toast.LENGTH_SHORT).show();
}
return false;
}
});
public boolean deleteColumn(long id) {
Log.i("id : ", valueOf(id));
return mDB.delete(DataBases.CreateDB._TABLENAME, "_id=" + id, null) > 0 ;
}