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

AlertDialog에 DB에 저장된 사용자정보를 가져오고싶어요!

0 추천

다이알로그를 띄어서 사용자가 입력했던 정보들을 보여주고 수정 or 삭제가 가능하게 하고싶은데요...

제가 cursor adapter을 사용해서 리스트뷰를 받아왔는데 dialog에도 그런방법으로 받아오려하는데 잘안되네요 ㅠ.ㅠ 혹시 관련된 예제소스 공유해주실수있으신가요..?ㅠㅠ

 이렇게 adpater자바클래스를 따로 생성했고용 그뒤에 메인액티비티에 어댑터를 리스트뷰에 붙였어요!

public class DBAdapter extends CursorAdapter {

    public DBAdapter(Context context, Cursor c) {
        super(context, c);
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {

       final ImageView image = (ImageView) view.findViewById(R.id.image_view);
        final TextView name = (TextView) view.findViewById(R.id.textname);
        final TextView date = (TextView) view.findViewById(R.id.textdate);
        TextView id1 = (TextView) view.findViewById(R.id.id_row);

        image.setImageResource(R.drawable.cake);

        name.setText(cursor.getString(cursor.getColumnIndex("name")));
        date.setText(cursor.getString(cursor.getColumnIndex("date")));


    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View v = inflater.inflate(R.layout.listviewitem, parent, false);
        return v;
    }
}

 

근데 저 아이템 onClick메소드에서 오류가 발생해서 앱이꺼져요 ㅠ.ㅠ 디비에서 가져오는방법이 잘못된거같은데 도와주세용!!ㅠㅠㅠ

mListView = (ListView) findViewById(R.id.listview);
dbmanager = new DBManager(this);
selectDB();

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        cursor.moveToPosition(position);
        AlertDialog.Builder alertDlg = new AlertDialog.Builder(MainActivity.this);
        LayoutInflater inflater = MainActivity.this.getLayoutInflater();
        alertDlg.setView(inflater.inflate(R.layout.custom_dialog, null));

        final TextView name = (TextView) v.findViewById(R.id.dialog_name);
        final TextView date = (TextView) v.findViewById(R.id.dialog_date);
        sqlitedb = dbmanager.getReadableDatabase();
        sql = "SELECT * FROM customers;";


        String str = cursor.getString(cursor.getColumnIndex("name"));
        String dia_date = cursor.getString(cursor.getColumnIndex("date"));
        name.append(":"+str);
        // date.append(":"+dia_date);

        Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
        Log.e("tag", "warning message");
        alertDlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();  // AlertDialog를 닫는다.
            }
        });
뚜루루루둡 (1,130 포인트) 님이 2016년 5월 29일 질문
제가 권장 드리는 방법은 DB table을 컨트롤하는 클래스를 만들고 여기서 원하는 query를 해오신 다음 List같은 collection으로 모델클래스를 담아서 리턴하시고 이걸 이용해서 작업하는 겁니다.

1개의 답변

0 추천
exception 을 올려야 무슨 오류인지 사람들이 알겠죠..
aucd29 (218,390 포인트) 님이 2016년 5월 30일 답변
추가로 소스가 길어서 안올라가서 자르다보니이렇게됐네요 ㅠ.ㅠ cursoradapter을 사용해서 디비에 저장된 값들을 제가 만든 커스텀 리스트뷰에 뿌려줬구요 mlistview.onclicklistner을 주고 클릭하면 커서로 제가 찾고싶은 정보찾아내서 제가 만든 커스텀다이얼로그에 붙여주려고한건데 이부분에서 오류가나요 !
...