@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addBtn = (Button)findViewById(R.id.addBtn);
itemInput = (EditText)findViewById(R.id.itemInput);
addBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
addItem(itemInput.getText().toString());
itemInput.setText("");
}
});
handler = new MyDbHandler(this,null,null,1);
mylist = (ListView) findViewById(R.id.listView);
mylist.setOnItemClickListener(
new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Log.d("Clicked item id", " "+position);
}
});
getList();
}
以上是我的主要活動,環顧四周後,我發現了一個解決方案,說位置參數表示數據庫中,但我的項目ID沒有爲我工作。我想獲得在我的列表中點擊的項目的數據庫ID。我有麻煩檢索項目的數據庫的ID點擊列表上
package com.lagfvu.quicklist;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
/**
* Created by musaddiq on 2/23/16.
*/
public class MyDbHandler extends SQLiteOpenHelper
{
private static final int DATABASE_VERSION = 5;
private static final String DATABASE_NAME = "quicklist.db";
private static final String ITEMS_TABLE = "list";
private static final String COLUMN_ID = "_id";
private static final String COLUMN_NAME = "itemname";
public MyDbHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
{
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
String query = "CREATE TABLE "+ ITEMS_TABLE + "(" + COLUMN_ID +" INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_NAME +" TEXT"+");";
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS "+ ITEMS_TABLE);
onCreate(db);
}
public void addItem(String item)
{
ContentValues cv = new ContentValues();
cv.put(COLUMN_NAME,item);
SQLiteDatabase db = getWritableDatabase();
db.insert(ITEMS_TABLE, null, cv);
db.close();
}
public void deleteItem(long id)
{
SQLiteDatabase db = getWritableDatabase();
db.execSQL("DELETE FROM " + ITEMS_TABLE + " WHERE " + COLUMN_ID + "=\"" + id + "\";");
}
//print out as string
public ArrayList<String> DbToList()
{
ArrayList<String> itemList = new ArrayList<>();
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT "+ COLUMN_NAME +" FROM "+ ITEMS_TABLE + "\n";
//cursor pointer
Cursor cursor = db.rawQuery(query,null);
//move to first row in results
cursor.moveToFirst();
while(!cursor.isAfterLast())
{
if(cursor.getString(cursor.getColumnIndex("itemname"))!= null)
{
itemList.add(cursor.getString(cursor.getColumnIndex("itemname")));
}
cursor.moveToNext();
}
db.close();
return itemList;
}
}
這是我的dbhandler類。
後MyDbHandler.java –
類的,你用什麼方法在MyDbHandler類從數據庫中提取數據的代碼。 –
@UsmanAsghar我已添加代碼。我能夠從我的數據庫中獲取所有項目。問題是從列表中獲取單擊的項目的ID,所以我可以刪除它從分區 – lagfvu