好吧,我還是一個新的android和eclipse,但標題幾乎說明了一切。我有一個從數據庫中的行填充的ListView。我想在選中列表視圖項並從按鈕單擊時刪除數據庫行,然後刷新ListView。到目前爲止,我的代碼填充列表,並且我卡在那裏。任何幫助將不勝感激。數據庫填充ListView從數據庫上的按鈕中刪除選擇
public class ViewListingsActivity extends Activity implements OnClickListener {
SQLiteDatabase db;
ListView listview;
Button button;
SimpleCursorAdapter adapter;
String value;
private static final String TAG = DBHelper.class.getSimpleName();
public static final String DB_ADDRESS = BaseColumns._ID;
public static final String DB_DESCRIPTION = "Description";
public static final String DB_URL = "URL";
final String dbTable = "Realtor_SMS_Table";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewlisting);
listview = (ListView) findViewById(R.id.list);
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(this);
DBHelper dbhelper = new DBHelper(ViewListingsActivity.this);
db = dbhelper.getWritableDatabase();
Cursor cursor = db.query(dbTable, null, null, null, null, null, null);
startManagingCursor(cursor);
String[] from = new String[] { DB_ADDRESS, DB_DESCRIPTION, DB_URL };
int[] to = new int[] { R.id.textlistaddress, R.id.textlistdescription,
R.id.textlisturl };
adapter = new SimpleCursorAdapter(this, R.layout.rowlist, cursor, from,
to);
listview.setAdapter(adapter);
listview.setChoiceMode(1);
}
public void onClick(View arg0) {
db.delete(dbTable, "_id=" + value, null);
adapter.notifyDataSetChanged();
Log.d("wtf", "deleted: " + value);
}
}
好吧,這裏是我的新編輯的代碼:
public class ViewListingsActivity extends Activity implements OnClickListener {
SQLiteDatabase db;
ListView listview;
Button button;
SimpleCursorAdapter adapter;
String value;
OnItemClickListener listener;
Cursor newcursor;
String deleteinfo;
private static final String TAG = DBHelper.class.getSimpleName();
public static final String DB_ADDRESS = BaseColumns._ID;
public static final String DB_DESCRIPTION = "Description";
public static final String DB_URL = "URL";
final String dbTable = "Realtor_SMS_Table";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewlisting);
listview = (ListView) findViewById(R.id.list);
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(this);
DBHelper dbhelper = new DBHelper(ViewListingsActivity.this);
db = dbhelper.getWritableDatabase();
Cursor cursor = db.query(dbTable, null, null, null, null, null, null);
startManagingCursor(cursor);
String[] from = new String[] { DB_ADDRESS, DB_DESCRIPTION, DB_URL };
int[] to = new int[] { R.id.textlistaddress, R.id.textlistdescription,
R.id.textlisturl };
adapter = new SimpleCursorAdapter(this, R.layout.rowlist, cursor, from,
to);
listview.setAdapter(adapter);
listview.setChoiceMode(1);
listview.setOnItemClickListener(listener);
}
public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
newcursor = ((SimpleCursorAdapter)listview.getAdapter()).getCursor();
deleteinfo = newcursor.getString(1);//getString(0);
}
public void onClick(View arg0) {
db.delete(dbTable, "_id=" + deleteinfo, null);
adapter.notifyDataSetChanged();
Log.d("wtf", "deleted: " + deleteinfo);
}
}
我deleteinfo字符串保存返回null,爲什麼不檢索正確的列值?
問多個問題中的一個問題格式那種失敗的問題/答案的模式,不是嗎?無論如何,不要在onItemClick中調用getCursor() - 在我的編輯中更仔細地查看我的代碼。 –
對不起,你完全正確。無論如何,我明白了。你們好棒!! – Ryan