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

DB delete 시에 리스트 갱신에 대하여 질문드립니다.

0 추천
package com.example.pricecalcul;

import java.util.ArrayList;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v4.widget.ResourceCursorAdapter;
import android.support.v4.widget.SimpleCursorAdapter;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;

public class AllMemberList extends Activity implements OnClickListener{
    
    
    EditText s_day;
    Button   search_b;
    ListView list;
    DBHelper dbHelper;
    SQLiteDatabase db;
    String sql,prpr,name ="";
    Cursor cursor,cursora,cursorb;
    int pposition;
    ListCursorAdapte dbAdapte;
    
    
    public void onCreate(Bundle savedInstanceState) {
        
        super.onCreate(savedInstanceState);
        setContentView(R.layout.searchlist);
        
        s_day = (EditText) findViewById(R.id.etTel);
        search_b = (Button) findViewById(R.id.btnSearch);
                
        search_b.setOnClickListener(this);
        
                
                
        list = (ListView)findViewById(R.id.etContacts);
       
        dbHelper = new DBHelper(this);
       
        
        list.setOnItemClickListener(new OnItemClickListener() {
            
            public void onItemClick(AdapterView<?> parent, View view,
                      int position, long id) {
                
                
                
                pposition = position;   
                showLoginDialog();
                
            
                                                                                                                                <=========리스트된 것들을 클릭하면 delete,cancle,update 가 뜨게 하였고
            
            }
        });
        
                
        
    }
    public void showLoginDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Select");
        builder.setCancelable(false);
        
       
 
 
        
        builder.setNegativeButton("delete", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                
                
                 db = dbHelper.getWritableDatabase();
                 
                 sql = "SELECT * FROM member WHERE name='" + s_day
                          + "';";                                                                                   
                  
                 cursora = db.rawQuery(sql, null);
                 cursora.moveToFirst();
                 cursora.moveToPosition(pposition);
                  Log.v("Changethig", String.format("poso: %d", pposition));
                  if (cursor.moveToPosition(pposition))    {
                      prpr = cursor.getString(cursor.getColumnIndex("_id"));
                      }
                  //prpr = cursor.getString(cursor.getColumnIndex("_id"));
                  Log.v("Changethig",""+prpr);                                                                   <=========이부분에서 이제 나름대로  삭제하면 바로 리스트가 갱신되서 보이게끔 했는데 이게 두가지 조건으로 검색을 하게되면 막힙니다.
                  
                  //olname = cursor.getString(cursor.getColumnIndex("name"));
                 
                 
                 db.execSQL("DELETE FROM member WHERE _id= '"+prpr+"';");
                 sql = "SELECT * FROM member WHERE name='" + s_day
                       + "';";
                 cursor = db.rawQuery(sql, null);
                 cursor.moveToFirst();
                 selectDB(name);
                 //dbAdapte.changeCursor(cursora);
                //dbAdapte.notifyDataSetChanged();                                                   

<=========리스트 갱신에는 이 함수를 쓴다고 해서 했는데 잘 안먹힙니다.
                Toast.makeText(AllMemberList.this, "삭제되었습니다.", Toast.LENGTH_SHORT).show();
                 
                 
            }
        });
        builder.setNeutralButton("cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(getApplicationContext(), "CANCEL 눌러짐", Toast.LENGTH_SHORT).show();
            }
        });
 
        
        builder.setPositiveButton("update", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                
                Cursor c = (Cursor)list.getItemAtPosition(pposition);
                String memoname = c.getString(1).toString();
                //Toast.makeText(AllMemberList.this, memoname, Toast.LENGTH_SHORT).show();
                Intent i =new Intent(AllMemberList.this, Changethig.class);
                i.putExtra("name", memoname);
                i.putExtra("position", pposition);
                startActivity(i);
                
 
                
            }
        });
 
        builder.create();
        builder.show();
    }
    
    
    private void selectDB(String s_key){
         db = dbHelper.getWritableDatabase();
         sql = "SELECT * FROM member WHERE month='" + s_key
                 + "';";
         cursor = db.rawQuery(sql, null);
         if(cursor.getCount() >= 0){
          startManagingCursor(cursor);
          dbAdapte = new ListCursorAdapte(this, cursor);
          dbAdapte.notifyDataSetChanged();
          list.setAdapter(dbAdapte);
          
         }       
        
     
                
        
    }
    

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        
        
        name = s_day.getText().toString().trim();
        
        selectDB(name);
        
                
    }
}

delete 했을 시에 list에 갱신되서 바로바로 나타날수있게 도움부탁드립니다.
노디키키 (140 포인트) 님이 2015년 10월 9일 질문

답변 달기

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