2 votes

Impossible de rafraîchir la base de données après la suppression d'une ligne

J'utilise SQLiteDatabase dans Android. Je ne suis pas en mesure de référencer mon listview après avoir supprimé une ligne. Mon code est le suivant :

    public void delete(String i) {
    // TODO Auto-generated method stub
    String [] columns= new String[]{KEY_ROW_ID,KEY_FHR,KEY_ID,KEY_NAME,KEY_AGE};
    Cursor c= our_db.query(KEY_TABLE, columns, null, null,null, null, null);
    our_db.delete(KEY_TABLE, KEY_NAME+ "="+"\'"+i+"\'", null) ;
    c.requery();

}

Je l'appelle de la part d'un observateur de l'adaptateur efficace. Voici le code où je l'appelle :

        holder.del.setOnClickListener(new OnClickListener() {
                private int pos=position;
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    final long newpos;
                    sql_get db = new sql_get(c);
                    db.open();

                    db.delete(DATA[pos]);               
                    notifyDataSetChanged();                     
                    db.close();
                }
            });

Quelqu'un peut-il m'aider à trouver le problème ? Il ne donne aucune erreur. Il a juste supprimé la ligne mais n'a pas mis à jour la vue.

Voici l'adaptateur que j'ai utilisé :

    private static class EfficientAdapter extends BaseAdapter {
    private LayoutInflater mInflater;
    private Bitmap mIcon1;
    private Bitmap mIcon2;
    private Bitmap mIcon3;
    private Bitmap mIcon4;

    Context c;
    int window;

    public EfficientAdapter(Context context) {
        // Cache the LayoutInflate to avoid asking for a new one each time.
        mInflater = LayoutInflater.from(context);
        this.c=context;
        // Icons bound to the rows.
        mIcon1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon48x48_1);
        mIcon2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon48x48_2);
        mIcon3 = BitmapFactory.decodeResource(context.getResources(), R.drawable.del1);
        mIcon4 = BitmapFactory.decodeResource(context.getResources(), R.drawable.edit);
    }       
    public int getCount() {
        return DATA.length;
    }       
    public Object getItem(int position) {
        return position;
    }   
    public long getItemId(int position) {
        return position;
    }       
    public View getView(final int position, View convertView, ViewGroup parent) {
        // A ViewHolder keeps references to children views to avoid unneccessary calls
        // to findViewById() on each row.
        ViewHolder holder;
        //int i=0;

            convertView = mInflater.inflate(R.layout.list_item_icon_text, null);

            // Creates a ViewHolder and store references to the two children views
            // we want to bind data to.
            holder = new ViewHolder();
            holder.text = (TextView) convertView.findViewById(R.id.text);
            holder.icon = (ImageView) convertView.findViewById(R.id.icon);
            holder.del=(ImageView)convertView.findViewById(R.id.icon1);
            holder.edit=(ImageView)convertView.findViewById(R.id.icon2);

            window=position;
            holder.text.setOnClickListener(new OnClickListener() { 
                private int pos=position;

                //private int pos = position; 
                public void onClick(View v) { 

                    System.out.println(window);
                    sql_get db = new sql_get(c);
                    db.open();
                    String ret_id= db.getid(DATA[pos]);
                    String ret_name = db.getname(DATA[pos]);                        
                    String ret_age= db.getage(DATA[pos]); 
                    String ret_fhr= db.getfhr(DATA[pos]);                       
                    String[] result = {ret_id,ret_name,ret_age,ret_fhr};
                    db.close();
                    Bundle b=new Bundle();
                    b.putStringArray("key",result); 
                    Intent i =new Intent(c,Tabs.class);
                    i.putExtras(b);
                    c.startActivity(i)  ;
                    Toast.makeText(c, getItemId(position)+""+" Click- text " +pos+" "+ret_name, Toast.LENGTH_SHORT).show();
                } 
            });                 
            holder.del.setOnClickListener(new OnClickListener() {
                private int pos=position;
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    final long newpos;                      
                    sql_get db = new sql_get(c);
                    db.open();
                    db.delete(DATA[pos]);                       
                    notifyDataSetChanged();                     
                    db.close();                     
                    Toast.makeText(c, "deleting " + DATA[pos], Toast.LENGTH_SHORT).show();                      
                }
            });
            convertView.setTag(holder);
        }           
        holder.text.setText(DATA[position]);
        holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);
        holder.del.setImageBitmap(mIcon3);
        holder.edit.setImageBitmap(mIcon4);
        return convertView;     
    static class ViewHolder {
        ImageView del;
        TextView text;
        ImageView icon;
        ImageView edit;
    }       
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X