마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

sqlite 리스트뷰 삭제시 뷰 갱신

0 추천

제목그래로 입니다 리스트뷰를 삭제하면 데이터베이스도 잘 삭제됩니다 다만 화면 상에는 삭제가 안되구요

다른 액티비티를 나갔다가 다시 들어오면 정상적으로 삭제가 되어있습니다 그래서 야매로 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();

}

나는안드로오 (960 포인트) 님이 2014년 8월 29일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...