0

データベースからのアイテムをリストビューに入力するパスワード マネージャーのリスト ビューを作成しようとしています。誰かがクリックするとプライマリ ID が返されます。 .これが私がこれまでに行ったことです....リストビューを作成することはできますが、クリックイベントを処理することはできません:(

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

}
4

3 に答える 3

0

ArrayAdapter を使用して DB からロードすることはお勧めできません。代わりに、CursorAdapter と CursorLoader を使用してデータベースを管理する必要があります。SimpleCursorAdapter は非推奨です。

カスタム CursorAdapter に関する優れたチュートリアルは次のとおりです:リンク

CursorLoaders 用の別のもの:リンク

于 2014-02-13T17:24:54.033 に答える
0

からデータを読み取る場合は、 代わりにCursorAdapterまたはSimpleCursorAdapterなどのサブクラスの 1 つをCursor使用する必要があります。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 親、View ビュー、int 位置、long id)

を使用する場合CursorAdapter、最後のパラメータはデータベース内idの列です。_id

于 2013-10-30T16:05:22.187 に答える
0

Android に単純なビューを作成させる代わりに、ID (getColumnIndex("_id");) をカスタム オブジェクトに保存するカスタム リスト アダプターを使用します。

于 2013-10-30T15:59:00.393 に答える