2016-03-24 5 views
1

私はアンドロイドを初めて使っています。私は修正できないという単純な問題があります。私が望むのは、リストビューをデータベースのIDでロードして、それをクリックするとデータベース内のIDと一致するようにすることです。レコードのIDをリストビューに読み込みます。android

public ArrayList<String> getAllContact() { 
     ArrayList<String> array_list = new ArrayList<>(); 

     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor res = db.rawQuery("SELECT * FROM contacts", null); 
     res.moveToFirst(); 

     while (res.isAfterLast() == false){ 
      array_list.add(res.getString(res.getColumnIndex(CONTACT_COLUMN_NAME))); 
      res.moveToNext(); 
     } 
     return array_list; 
    } 

    mydb = new DBHelper(this); 
    ArrayList array_list = mydb.getAllContact(); 
    ArrayAdapter arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, array_list); 
    obj = (ListView) findViewById(R.id.listView1); 
    obj.setAdapter(arrayAdapter); 
    obj.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     int id_in_db = position + 1 
     Bundle dataBundle = new Bundle(); 
     dataBundle.putInt("cid", id_in_db); 

     Intent intent = new Intent(getApplicationContext(), DisplayContact.class); 
     intent.putExtras(dataBundle); 
     startActivity(intent); 
     } 
    }); 

私はonclickitemから取得することができますが、データベース内の私の記録には一致しませんでした、リスト内のアイテムの位置は次のとおりです。ここでmycodeです。私は.setTagメソッドが解決策になることができますが、私はこのコードを5月にどのように適用するのか分かりません。誰かが私にこれを助けることができますか?

+0

'onItemClick'の' position'は、あなたのアダプターのクリックされた項目の位置です。したがって、 'arrayAdapter'を使ってdb IDに関連付けられたオブジェクトを取得することができます。 –

+0

はい私はあなたに同意しますが、配列アダプタにIDを設定すると、リストビューを割り当てるときにonItemClickで呼び出すことができるパラメータがあります。 –

+0

誰かがこれを助けてくれますか? –

答えて

0

ですから、このよう選択した項目のIDを取得することができます。それは、データベースから

int id_in_db = array_list.get(position).ID 
Bundle dataBundle = new Bundle(); 
dataBundle.putInt("cid", id_in_db); 

とあなたでDisplayContact活動の負荷をか、それが負荷に必要ではないだろうので、あなたが全体のアイテムだけでなく、IDを渡すことができますもう一度

+0

だから私は私のアライリストに設定する必要がありますので、私はIDプロパティを呼び出すことができますか? –

+0

そのためには、DBのテーブルのようなモデル(クラス)を作成し、ArrayAdapterの代わりにカスタムアダプターを作成し、それを既に作成済みのArrayListと一緒に使用する必要があります。 – oshurmamadov

+0

カスタムアダプターを作成する場合は、 onItemClickでパラメータとして取得できますか?これのためのサンプルコードを私に提供できますか? –

関連する問題