2017-04-05 1 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에서 데이터를 가져 와서 listview에 게시하는 방법입니다. 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) { 

    } 
}); 

나는

이 그럼 당신은 그것은 경우 다소 간단 할 것이

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

같은 것을 사용할 수있는 토스트에서 (데이터베이스) 사용자의 ID를 표시하려면 firebase 값을 Java 객체에 매핑했습니다.

+0

예. 그러나 listview에서 id 값을 숨기려고합니다. –

관련 문제