2017-04-05 81 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方法中创建适配器的点击侦听器。

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) { 

    } 
}); 

我想表明的用户(从数据库)的ID一起举杯

然后你可以使用这样的事情

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

是的但我想隐藏在列表视图中的id值 –

相关问题