2013-05-26 7 views
0

나는 Android를 처음 사용했습니다. SQLite에서 데이터 목록에 대한 항목을 삭제하는 방법을 찾도록 도와 줄 수 있습니까? setPositiveButtononListItemClick에이 코드가 있습니다. 이 항목을 삭제하기 위해 넣을 코드는 무엇입니까?SQLite에서 목록의 항목을 삭제하십시오.

package tab.example.menutab; 

import java.util.ArrayList; 
import java.util.List; 

import android.app.AlertDialog; 
import android.app.ListActivity; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 

public class ListedesClient extends ListActivity { 
    TextView selectionc; 
    public int idToModify; 
    ClientDataAdapter dm; 

    List<String[]> list = new ArrayList<String[]>(); 
    List<String[]> names2 =null ; 
    String[] stg1; 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.listeclients); 
      dm = new ClientDataAdapter(this); 
      names2 = dm.selectAll(); 

     stg1=new String[names2.size()]; 

     int x=0; 
     String stg; 

     for (String[] name : names2) { 
      stg = name[1]+" - "+name[2]+ " - "+name[3]; 

      stg1[x]=stg; 
      x++; 
     } 


     ArrayAdapter<String> adapter = new ArrayAdapter<String>( 
       this,android.R.layout.simple_list_item_1, 
       stg1); 
     this.setListAdapter(adapter); 
     selectionc=(TextView)findViewById(R.id.selectionc); 

    }  

    public void onListItemClick(ListView parent, View v, final int position, long id) { 

     selectionc.setText("Vous êtes sur : " + stg1[position]); 
     AlertDialog.Builder builder = new AlertDialog.Builder(this) 
     .setTitle("Delete Item") 
     .setMessage("are you sure to delete?") 
     .setPositiveButton("Yes", 
       new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface arg0, int arg1) { 
         // TODO Auto-generated method stub 
        ClientDataAdapter nota = (ClientDataAdapter) adapterView 
           .getItemAtPosition(position); 
         ClientDataAdapter.delete(stg1[position]); 

         // Refrescamos la lista refrech i gess but havent the methode 
         refrescarLista(); 


        } 
      }) 

     .setNegativeButton("No", 
       new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, 
          int which) { 
         // TODO Auto-generated method stub 
         return; 
        } 
      }); 
    builder.show(); 
    } 

} 

을 그리고 데이터베이스에 대해 내가 가진 : 나는이

package tab.example.menutab; 

import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.database.sqlite.SQLiteStatement; 
import java.util.ArrayList; 
import java.util.List; 

public class ClientDataAdapter { 
    private static final String DATABASE_NAME = "clientbase.db"; 
    private static final int DATABASE_VERSION = 1; 
    static final String TABLE_CLIENT = "clienttable"; 
    private static Context context; 
    static SQLiteDatabase dc; 
private SQLiteStatement insertStmt; 

    private static final String INSERT = "insert into " 
     + TABLE_CLIENT + " (nom_complet,adresse_client,numero_telephone) values (?,?,?)"; 

    public ClientDataAdapter(Context context) { 
     ClientDataAdapter.context = context; 
     OpenHelper openHelper = new OpenHelper(ClientDataAdapter.context); 
     ClientDataAdapter.dc = openHelper.getWritableDatabase(); 
     this.insertStmt = ClientDataAdapter.dc.compileStatement(INSERT); 
     } 

    public long insert(String nom_complet,String adresse_client,String numero_telephone) { 
     this.insertStmt.bindString(1, nom_complet); 
     this.insertStmt.bindString(2, adresse_client); 
     this.insertStmt.bindString(3, numero_telephone); 
     return this.insertStmt.executeInsert(); 
    } 

    public void deleteAll() { 
     dc.delete(TABLE_CLIENT, null, null); 
    } 

    public List<String[]> selectAll() 
    { 

     List<String[]> list = new ArrayList<String[]>(); 
     Cursor cursor = dc.query(TABLE_CLIENT, new String[] { "id","nom_complet","adresse_client","numero_telephone"}, 
       null, null, null, null, "nom_complet asc"); 

     int x=0; 
     if (cursor.moveToFirst()) { 
      do { 
       String[] b1=new String[]{cursor.getString(0),cursor.getString(1),cursor.getString(2),cursor.getString(3)}; 

       list.add(b1); 

       x=x+1; 
      } while (cursor.moveToNext()); 
     } 
     if (cursor != null && !cursor.isClosed()) { 
      cursor.close(); 
     } 
     cursor.close(); 

     return list; 
    } 


    public void delete(int rowId) { 
     dc.delete(TABLE_CLIENT, null, null); 
    } 

    private static class OpenHelper extends SQLiteOpenHelper { 

     OpenHelper(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase dc) { 
      dc.execSQL("CREATE TABLE " + TABLE_CLIENT + " (id INTEGER PRIMARY KEY, nom_complet TEXT NOT NULL, adresse_client TEXT NOT NULL, numero_telephone TEXT NOT NULL)"); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase dc, int oldVersion, int newVersion) { 
      dc.execSQL("DROP TABLE IF EXISTS " + TABLE_CLIENT); 
      onCreate(dc); 
     } 
    } 
} 

답변

0

이 웹 사이트는 안드로이드 데이터베이스 처리에 대부분의 문제와 함께 당신을 도울 것이다. http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

제가 올바르게 이해한다면;

public void delete(int rowId) { 
    dc.delete(TABLE_CLIENT, id + " = ?", new String[] { String.valueOf(cursor.getString(0)) }); 
} 

왜 rowId가 필요한지 확실하지 않습니다.

+0

목록의 형식과 메서드를 사용하는 방법은 내게 똑같은 메모를하는 것입니다. 내 경우에해야 할 일은 데이터베이스에 삽입하는 방법입니다. 내가 안드로이드에서 어떻게 새로운지 알 수 있습니다. –

+0

제 편집문을 참조하십시오. 그것은 당신이 원하는 것에 가깝습니다. – Waddas

관련 문제