2016-08-05 12 views
0

私はリストビューを作成し、データベースから膨らませました。そして、私は使用してonclicklistenerリストビューの項目を設定している:Android:リストビューのデータが別のアクティビティで渡されていません

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_books); 
    listView = (ListView) findViewById(R.id.listView); 
    call=(Button)findViewById(R.id.call); 
    userDbHelper = new UserDbHelper(getApplicationContext()); 
    sqLiteDatabase = userDbHelper.getReadableDatabase(); 
    cursor = userDbHelper.getInformation(sqLiteDatabase); 
    listDataAdapter = new ListDataAdapter(getApplicationContext(), R.layout.row_layout); 
    final TextView txt=(TextView) findViewById(R.id.pr); 
    listView.setAdapter(listDataAdapter); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      Intent in=new Intent(Books.this,List1.class); 
      TextView txt=(TextView)findViewById(R.id.pr); 
      String getPrice=txt.getText().toString(); 
      in.putExtra("getPrice",getPrice); 
      startActivity(in); 
     } 
    }); 

    if (cursor.moveToFirst()) { 
     do { 
      id = cursor.getInt(0); 
      category = cursor.getString(1); 
      name = cursor.getString(2); 
      phone = cursor.getString(3); 
      price = cursor.getString(4); 
      desc = cursor.getString(5); 
      photo = cursor.getBlob(6); 

      //Bitmap bmp = BitmapFactory.decodeByteArray(photo, 0, photo.length); 
      DataProvider dataProvider = new DataProvider(id,category, name, phone, price, desc, photo); 
      listDataAdapter.add(dataProvider); 
     } while (cursor.moveToNext()); 
    } 
} 

List1.classに私はそれに応じて他のレイアウトを膨らませることができるように、リストビュークリックされたデータベースからIDを取得しようとしています。どのようにそれを行うことができますか?
List1.class

渡されるListViewコントロールのID /位置を設定し
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_list1); 
     TextView txt=(TextView)findViewById(R.id.pr); 
     String getPrice=txt.getText().toString(); 
     userDbHelper = new UserDbHelper(getApplicationContext()); 
     sqLiteDatabase = userDbHelper.getReadableDatabase(); 
     ImageView img1=(ImageView)findViewById(R.id.image2); 
     Intent in=getIntent(); 
     Cursor cursor=userDbHelper.getContact(getPrice,sqLiteDatabase); 
     if(cursor.moveToFirst()) 
     { 
      String NAME=cursor.getString(0); 
      String PHONE=cursor.getString(1); 
      String DESC=cursor.getString(2); 
      byte[] PHOTO=cursor.getBlob(3); 
      Bitmap bmp = BitmapFactory.decodeByteArray(photo, 0, photo.length); 
      img1.setImageBitmap(bmp); 
     } 
    userDbHelper=new UserDbHelper(getApplicationContext()); 
    sqLiteDatabase=userDbHelper.getReadableDatabase(); 
     price1=(TextView)findViewById(R.id.Price); 

} 
+0

アクティビティを開始するときに 'onClickListener'に値を渡す必要があります。その値を取得してDBコードに渡します。私はあなたを正しく理解している。 – andre3wap

+0

私はあなたの意図を始めている間にどこの値を渡しているのかわかりません。 – andre3wap

+0

'intent.putExtra'も –

答えて

1

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

     Intent in=new Intent(Books.this,List1.class); 
     ///String text = (String) lv.getItemAtPosition(i); //Or you can get the text for the List item you clicked on. 
     in.putExtra("ID_VAR", i); /// ID clicked 
     startActivity(in); 
    } 
}); 

をごonCreate内のデータを取得:

Intent mIntent = getIntent(); 
int intValue = mIntent.getIntExtra("ID_VAR", 0); 
System.out.println("Debugging:" + intValue); ///Debugging 
+0

うん、List1.classレイアウトが開かれていますが、対応するイメージがまだ設定されていません。 :/ –

+0

「対応するイメージ」の意味がわかりません - クリックしたリストアイテムの値を取得しようとしています>それを 'List1'に渡し、それを使って対応するデータを取得します/インフレータその他のレイアウト値 – andre3wap

+0

ええ、それは私がしようとしている..リストビューにも画像があります..そして2番目のレイアウトではデータが設定されていません。 –

0

意図を開始しませんデータそのものを追加する。データをインテントに明示的に追加する必要があります。 これはputExtraメソッドで実行できます。このメソッドは、最初に2つのパラメータを必要とします。通常はキーです。このキーを使用してデータを取得します。その他のパラメータは、String、int、long、booleanなどの値になります。 ここでvalueは文字列型です。

in.putExtra("key","value"); 

あなたの場合。 onItemClick方法で連絡先オブジェクトを抽出し、

in.putExtra("id",contact.getId()); 

とのonCreateメソッド内のList1の活動にあなたがここでは、この

Intent in = getIntent(); 
int id = in.getIntExtra("id",-1); 

のようなIDを取り戻すことができます-1のような意図と一緒にそのデータを渡しますデフォルト値です。また、 "id"であるデータを取り出す際に、データをインテントに格納するのに使用されたのと同じキーを使用していることにも注意してください。次に、DBからデータを照会することができます。

関連する問題