我从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();
}
}
答案 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!
}
希望它有所帮助!