I have firebase data as below. I want to display key in the textview when click on ListView.
I try to get key from discount with below code
private void getKeyValues(){
databaseReference = FirebaseDatabase.getInstance().getReference().child("promotion").child("discount");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String key = dataSnapshot.getKey();
for (DataSnapshot child: dataSnapshot.getChildren()){
//Object object = child.getKey();
labelGetKey.setText(child.getKey());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e("Read Fail", "Error");
}
});
}
It's working but only get the last key and show in the textview. the first key or other key didn't show. here is my code for listview
private void retrieveDataShowListView(){
// Array List and Adapter for Message ListView;
final ArrayList<String> arrayList = new ArrayList<>();
final ArrayAdapter<String> adapter;
databaseReference = FirebaseDatabase.getInstance().getReference().child("promotion").child("discount");
adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,arrayList);
listViewPromotion.setAdapter(adapter);
listViewPromotion.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String showValue = String.valueOf(parent.getItemAtPosition(position));
editTextPromotion.setText(showValue);
// Display Key from Database
getKeyValues();
}
});
databaseReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String strLocation = dataSnapshot.getValue(String.class);
arrayList.add(strLocation);
adapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
String string = dataSnapshot.getValue(String.class);
arrayList.remove(string);
adapter.notifyDataSetChanged();
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
}
Can you help me what is the mistake about my code. Thanks!