2017-04-05 33 views
0
dbRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(final DataSnapshot dataSnapshot) { 

      for (final DataSnapshot ds : dataSnapshot.getChildren()){ 
       arr.add(ds.child("name").getValue().toString()+"--"+ds.child("id").getValue().toString()); 
//ds.child("id").getValue().toString() this is how i get id from database 
       lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
         Toast.makeText(getApplication(),"id :"+ds.getKey(),Toast.LENGTH_SHORT).show(); 
        } 
       }); 
      } 
      lv.setAdapter(arrayAdapter); 
     } 
     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

これはFirebaseからデータを取得してリストビューに投稿する方法です。 onItemClick私はトーストで(データベースからの)ユーザーのIDを表示したいと思います。Firebaseからデータを取得してリストビューでデータを取り込みます

答えて

0

Firebaseの方法でアダプタのクリックリスナーを作成しないようにしてください。私はトースト

に(データベースから)ユーザーのIDを表示したい

lv.setAdapter(arrayAdapter); 
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     String clicked = arrayAdapter.getItem(position).toString(); 
     Toast.makeText(MainActivity.this, 
      "id :" + clicked, 
      Toast.LENGTH_SHORT).show(); 
    } 
}); 


dbRef.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(final DataSnapshot dataSnapshot) { 
     arrayAdapter.clear(); 
     for (DataSnapshot ds : dataSnapshot.getChildren()){ 
      arrayAdapter.add(ds.child("name").getValue().toString()+"--"+ds.child("id").getValue().toString()); 
     } 
    } 
    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 

あなたはこの

String clicked = arrayAdapter.getItem(position).toString(); 
String[] parts = clicked.split("--"); // This is because you added "--" on the other string. 
Toast.makeText(MainActivity.this, 
    "id :" + parts[1], 
    Toast.LENGTH_SHORT).show(); 

のようなものを使用することができ、それはやや単純であるかどうあなたのfirebaseの値をJavaオブジェクトにマップしました

+0

はい、私はlistviewでid値を隠したいと思います –

関連する問題