제목그래로 입니다 리스트뷰를 삭제하면 데이터베이스도 잘 삭제됩니다 다만 화면 상에는 삭제가 안되구요
다른 액티비티를 나갔다가 다시 들어오면 정상적으로 삭제가 되어있습니다 그래서 야매로 onCreate함수를 파이널로 해서 삭
제 될때마다 불렀더니 삭제할때마다 리스트 값은 잘 불러와 지는데 맨위로 목록이 올라가더라구요 그래서 제대로 구현을 하
고 싶습니다
여기서 찾아보니 이 아래링크분과 완전 똑같은 문제구요 아랫분은 삭제하고 다시 데이터를 넣어줬다는데
http://www.masterqna.com/android/21850/%EB%A6%AC%EC%8A%A4%ED%8A%B8%EB%B7%B0-%EB%B3%80%EA%B2%BD%EB%90%A0-%EB%95%8C-%EA%B0%B1%EC%8B%A0
제가 보기에는
adapter.notifyDataSetChanged(); 이 함 수를 호출할때 데이터 베이스를 리스트값으로 받아줍니다 그런데 이 함수에서 그 삭제된 데이터 값을 못 받아 오는 것 같습니다 어떻게 해줘야 될까요 ㅜㅜㅜ
아래는 소스입니다다
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ밀어서 삭제
SwipeDismissListViewTouchListener touchListener =
new SwipeDismissListViewTouchListener(list,
new SwipeDismissListViewTouchListener.DismissCallbacks() {
@Override
public boolean canDismiss(int position) {
return true;
}
@Override
public void onDismiss(ListView list, int[] reverseSortedPositions) {
for (int position : reverseSortedPositions) {
adapter.arSrc.remove(adapter.getItem(position));
FavoriteDB.deleteFile(position,dbHelper);
arSrc = FavoriteDB.selectAllFile(dbHelper);
}
adapter.notifyDataSetChanged();
}
});
list.setOnTouchListener(touchListener);
list.setOnScrollListener(touchListener.makeScrollListener());
}
ㅡㅡㅡㅡㅡㅡㅡ리스트뷰 생성
public static ListView list;
public static ArrayList<FavoriteFile> arSrc;
public static FavoriteDBHelper dbHelper;
public static ListAdapter adapter;
public void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.favorite_main);
list = (ListView) findViewById( R.id.file_list );
dbHelper = new FavoriteDBHelper(this);
arSrc = FavoriteDB.selectAllFile(dbHelper);
adapter=new ListAdapter( this, R.layout.favorite_list_view_layout , arSrc );
list.setAdapter( adapter );
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡDB삭제ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
public static void deleteFile( int position, FavoriteDBHelper dbHelper ){
ArrayList<FavoriteFile> list = null;
Cursor cs = null;
SQLiteDatabase db = dbHelper.getReadableDatabase();
list = new ArrayList<FavoriteFile>();
String sq = "SELECT * FROM file2";
cs = db.rawQuery( sq , null );
cs.moveToPosition(position+1);
int id=cs.getInt(0);
StringBuilder sql = new StringBuilder("DELETE FROM file2 WHERE _id="+id+";");
Log.i("mylog", sql.toString());
db.execSQL( sql.toString() );
db.close();
}