如何通过单击从列表视图和数据库中删除项目?

时间:2012-03-10 12:35:09

标签: android sqlite listview

  

可能重复:
  how to delete item from listView?

我从listview中的数据库中获取数据,它显示正常,但我需要删除
listview和数据库中的项目,点击它,我对此一无所知 这是我的示例代码,请给我建议或提示。

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

}

2 个答案:

答案 0 :(得分:2)

我在我的代码中使用了这个,就像在这个

中一样

请参阅此链接http://typicaljava.blogspot.in/2011/12/add-element-in-list-and-remove-it-by.html

OnItemClickListner调用你的删除查询并更新其中的列表,而不是我使用过的数组。

这可能对你有用..

答案 1 :(得分:1)

您需要的是很容易实现的。您只需实施方法onListItemClick(),删除已选择的项目并再次调用displayResultList()。例如:

@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!
}

希望它有所帮助!