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

리스트 뷰 db sql문으로 제거하기

0 추천

// Long click된 item의 index를 기록
int selectedPos = -1;

// ListView의 item을 길게 클릭
private class ListViewItemLongClickListener implements AdapterView.OnItemLongClickListener
{

    @Override

    public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id)
    {
        selectedPos = position;
        AlertDialog.Builder alertDlg = new AlertDialog.Builder(view.getContext());
        alertDlg.setTitle(R.string.alert_title_question);

        // '예' 버튼 클릭
        alertDlg.setNegativeButton( R.string.button_yes, new DialogInterface.OnClickListener()
        {

            @Override

            public void onClick( DialogInterface dialog, int which )
            {
                String query = String.format("DELETE FROM TABLE_NAME WHERE _id=" + selectedPos + ";");
                db.execSQL(query);
                cursor = db.rawQuery(querySelectAll, null);
                myAdapter.changeCursor(cursor);

                // method를 호출하지 않을 경우

                // AlertDialog를 종료
                dialog.dismiss();
            }
        });

        // '아니오' 버튼 클릭
        alertDlg.setPositiveButton( R.string.button_no, new DialogInterface.OnClickListener()
        {

            @Override

            public void onClick( DialogInterface dialog, int which ) {

                // AlertDialog를 닫는다.
                dialog.dismiss();
            }
        });
        alertDlg.setMessage(String.format(getString(R.string.alert_msg_delete)));
        alertDlg.show();
        return false;
    }

}

 

길게 눌러서 제거할지 물어보는 다이얼로그 창을 띄웁니다

거기서 yes 버튼 누르면 삭제가 되야 하는데

그때마다 자꾸 튕기네요

어디가문제인가요?

익명사용자 님이 2016년 10월 24일 질문

1개의 답변

0 추천

에러로그가 있다면 좋겠지만, 일단 의심되는 부분이 SQL이 잘못되어서 SQL Exception을 낼 가능성이 있네요.

String query = String.format("DELETE FROM TABLE_NAME WHERE _id=%d", selectedPos );

String query = "DELETE FROM TABLE_NAME WHERE _id=" + selectedPos;

둘 중의 하나로 처리하셔야 할 것 같네요. 저런 경우는 굳이 포맷문을 쓰지 않으셔도 될 것 같아 보이네요. 끝의 세미콜론은 SQL editor 같은데서 sql문이 여러개 있을 경우 각각을 구분하기 위해서 사용하는 구분자입니다.

spark (227,930 포인트) 님이 2016년 10월 24일 답변
둘 다 해봤는데도 계속 튕기기만 합니다

10-25 11:53:04.638 239-239/? E/lowmemorykiller: Error writing /proc/30337/oom_score_adj; errno=22
10-25 11:53:04.648 239-239/? E/lowmemorykiller: Error writing /proc/30337/oom_score_adj; errno=22
10-25 11:53:04.648 11210-31020/? D/libc-netbsd: res_queryN name = xxxxx succeed
10-25 11:53:04.648 239-239/? E/lowmemorykiller: Error writing /proc/30337/oom_score_adj; errno=22
10-25 11:53:04.648 21208-31005/? I/System.out: propertyValue:false
10-25 11:53:04.648 239-239/? E/lowmemorykiller: Error writing /proc/30337/oom_score_adj; errno=22
10-25 11:53:04.658 239-239/? E/lowmemorykiller: Error writing /proc/30337/oom_score_adj; errno=22

에러는 이런식으로 나오는데 제가 에러는 볼 줄 몰라서요 ㅠㅠ
에러 로그를 보실 줄 모르시면, 배우셔야 겠네요. 해당 로그가 님의 앱이랑 직접 관련이 있는 지 모르겠지만, 마치 모바일에 메모리가 부족해서 앱이 강제 종료되고 있는 것 같이 보이네요.
...