0

嗨,我在删除项目中存储数据列表对于 Android 中的 SQLite,我的问题是当我尝试删除一个项目时,我选择它并确认一个对话框,我想我不明白如何使用删除方法表的 id 这是我的代码,请帮助我让它工作......

数据库

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 id) {

        dc.delete("clienttable", "id=?", new String[] {String.valueOf(id)});
    }

    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);
        }
    }


}

对于我的清单,请告诉我要更改的内容

public class ListedesClient extends ListActivity  {

    TextView selectionc;
    public int idToModify; 
    ClientDataAdapter dm;

   String clientId;
    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) {

                         dm.delete(position);



                     }
             })

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

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

}
4

1 回答 1

0

Try adding notifyDataSetChanged() after the deletion:

dm.delete(position);
dm.notifyDataSetChanged();
于 2013-05-31T15:43:29.547 回答