我正在尝试为密码管理器创建一个列表视图,该列表视图将使用来自数据库的项目填充列表视图,当有人点击它时将返回primaryid ....我已经看到了其他示例但是无法完成核心工作....这是我到目前为止所做的......我能够填充列表视图但无法处理点击事件:(
ArrayList<String> listItems=new ArrayList<String>();
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_single_choice , listItems);
SQLiteDatabase DB= null;
final String TableName = "XIBEAT_PASSWORDS";
String DBname="Xibeat_Crypto_Knight_Vault";
try {
DB = this.openOrCreateDatabase(DBname, MODE_PRIVATE, null);
DB.execSQL("CREATE TABLE IF NOT EXISTS " + TableName + " ('_id' INTEGER PRIMARY KEY AUTOINCREMENT,HOST TEXT, URL TEXT, PASSWORD TEXT, NOTES TEXT, TAG TEXT, TIME TEXT, DATE TEXT, EXPIRE TEXT, EDITED TEXT, STRENGTH TEXT, REASON TEXT);");
Cursor c = DB.rawQuery("SELECT * FROM " + TableName , null);
int host= c.getColumnIndex("HOST");
String title="";
c.moveToFirst();
if(c!=null)
{
while (c.moveToNext()){
title = c.getString(host);
//Toast(title);
listItems.add(title);
}
}
final ListView passList=(ListView)findViewById(R.id.passlist);
passList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems));
//===============ONCLICK LISTENER+=========
passList.setOnItemClickListener(new OnItemClickListener()
{public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
}});
} finally {
if (DB != null)
DB.close();
}
}
答案 0 :(得分:0)
使用自定义列表适配器将Id(getColumnIndex(“_ id”);)保存在自定义对象中,而不是让Android为您创建简单视图。
答案 1 :(得分:0)
如果您正在阅读Cursor
中的数据,则应使用CursorAdapter或其中一个子类,例如SimpleCursorAdapter代替ArrayAdapter
:
Cursor c = DB.rawQuery("SELECT * FROM " + TableName , null);
final ListView passList=(ListView)findViewById(R.id.passlist);
passList.setAdapter(new SimpleCursorAdapter(this, // Context
android.R.layout.simple_list_item_1, // Layout
c, // Your Cursor
new String[] { "HOST" }, // Column(s) you want to display
new int[] { android.R.id.text1 }),
0); // Flags, 0 -> don't auto-requery when the data changes
onItemClick
的完整签名是:
onItemClick(AdapterView父视图,视图视图,int位置,长id)
如果您使用CursorAdapter
,则最后一个参数id
是数据库中的_id
列。
答案 2 :(得分:0)