¿Cómo eliminar un elemento de la vista de lista y la base de datos haciendo clic en él? [duplicar]

Posible duplicado:
how to delete item from listView?

I fetch data from Database in listview and it display properly but I need to delete
item from listview and database by clicking on it and I don't have any idea about that.
Here is my sample code, please give me suggestion or hint.

public class MyTable extends ListActivity {

private ArrayList<String> results = new ArrayList<String>();
int counter=0;

 MySQLiteHelper m=new MySQLiteHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {    
    super.onCreate(savedInstanceState);     
     retriveData();         
     displayResultList();        
}   
private void displayResultList() {
    TextView tView = new TextView(this);
    tView.setText("Loc Wise Profile! if you want to delete  " +
            "just click on the Profile!");
    tView.setTextColor(Color.YELLOW);
    getListView().addHeaderView(tView);

    setListAdapter(new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, results));
    getListView().setTextFilterEnabled(true);       
}
private void retriveData() {
    try {
        final MySQLiteHelper m=new MySQLiteHelper(getBaseContext());
        final List<LocWiseProfileBeans> LocWiseProfile= m.getAllLocWiseProfile();       

        for (final LocWiseProfileBeans cn : LocWiseProfile)
        {

                    results.add(cn.getLocname() + " " + cn.getSelectedprofile());
        }                       
    } catch (Exception e ) {            
    } 

}   

MySQliteHelper.java

public class MySQLiteHelper extends SQLiteOpenHelper {

public static final String TABLE_NAME = "loc_wise_profile";
public static final String TABLE_NAME2 = "supervisor";
public static final String COLUMN_ID = "_id";
public static final String COLUMN1 = "loc_name";
public static final String COLUMN2 = "lattitude";
public static final String COLUMN3 = "longitude";
public static final String COLUMN4 = "selectedprofile";
public static final String COLUMN5 = "contactno";
public static final String COLUMN6 = "message";
//public static final String COLUMN7 = "enabled";
public static final String COLUMN8 = "NotificeationMessage";

SQLiteDatabase db;   
private static final String DATABASE_NAME = "locale";
private static final int DATABASE_VERSION = 2;

// Database creation sql statement
private static final String DATABASE_CREATE = "create table IF NOT EXISTS "
        + TABLE_NAME + "( " + COLUMN_ID
        + " integer primary key autoincrement, " 
        + COLUMN1 + " text not null, "
        + COLUMN2 + " double not null, "
        + COLUMN3 + " double not null, "
        + COLUMN4 + " text not null ,"
        + COLUMN5 + " text not null ,"
        + COLUMN6 + " text not null ,"
        //+ COLUMN7 + " text not null ,"
        + COLUMN8 + " text not null "
        + ");";



public MySQLiteHelper(Context context)
{
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    // TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase database) {
    // TODO Auto-generated method stub
    database.execSQL(DATABASE_CREATE);
    //database.execSQL(DATABASE_CREATE2);
}


  // Adding new Location wise Profile
public void insertLocWiseProfile(LocWiseProfileBeans loc) {
     db= this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(COLUMN1, loc.getLocname()); // Contact Name
    values.put(COLUMN2, loc.getLattitude()); // Contact Phone Number
    values.put(COLUMN3, loc.getLongitude());
    values.put(COLUMN4, loc.getSelectedprofile());
    values.put(COLUMN5, loc.getContactno());
    values.put(COLUMN6, loc.getMessage());
    //values.put(COLUMN7, loc.getEnabled());
    values.put(COLUMN8, loc.getNotificationMessage());
    // Inserting Row
    db.insert(TABLE_NAME, null, values);
    db.close(); // Closing database connection
}


    // Getting All Contacts
 public List<LocWiseProfileBeans> getAllLocWiseProfile() {
    List<LocWiseProfileBeans> LocWiseProfileList = new ArrayList<LocWiseProfileBeans>();
    // Select All Query
    String selectQuery = "SELECT  * FROM " + TABLE_NAME;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            LocWiseProfileBeans loc= new LocWiseProfileBeans();
            //loc.set
            loc.setId(cursor.getInt(0));
            loc.setLocname(cursor.getString(1));
            loc.setLattitude(cursor.getDouble(2));
            loc.setLongitude(cursor.getDouble(3));
            loc.setSelectedprofile(cursor.getString(4));
            loc.setContactno(cursor.getString(5));
            loc.setMessage(cursor.getString(6));
           // loc.setEnabled(cursor.getString(7));
            // Adding contact to list
            LocWiseProfileList.add(loc);
        } while (cursor.moveToNext());
    }

    // return contact list
    return LocWiseProfileList;
}


@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
    Log.w(MySQLiteHelper.class.getName(), "Upgrading database from version "
            + oldVersion + " to " + newVersion
            + ", which will destroy all old data");
    database.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(database);
}
public void delete(int value)
{
    try{            
        SQLiteDatabase db= this.getWritableDatabase();
        db.delete(TABLE_NAME, COLUMN_ID+"="+value, null);

}
    catch(Exception e){}

}


public void deleteAll(){
    try{
    //db.execSQL("delete * from "+ TABLE_NAME);

        SQLiteDatabase db= this.getWritableDatabase();
        db.delete(TABLE_NAME, null, null);

    }catch(Exception e){}
}

public void deleteNyName(String string)
{
    // TODO Auto-generated method stub
    SQLiteDatabase db= this.getWritableDatabase();
       db.delete(TABLE_NAME, COLUMN1 +"=?", new String [] { COLUMN1 });
       db.close();
}   

}

preguntado el 10 de marzo de 12 a las 12:03

2 Respuestas

I have used this as in my code like in this

Ver este enlace http://typicaljava.blogspot.in/2011/12/add-element-in-list-and-remove-it-by.html

OnItemClickListner call your delete query and update the list in it instead of the Array which i have used.

This might be useful to you..

respondido 10 mar '12, 15:03

What you need is very easy to achieve. You just have to implement the method onListItemClick(), delete the seleted item and recall displayResultList() again. Example:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // The id is your COLUMN_ID in your database table for the selected item
    // So just delete the item with this id
    // Call displayResultList() here to repopulate the list without the element
    // you have deleted and that is it!
}

¡Espero eso ayude!

respondido 10 mar '12, 13:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.