So I've been using ValueEventListeners and ListenerForSignleValueEvent throughout my app to pull data from Firebase. From my understanding the onDataChanged() method is supposed to be called right away in each of these and that's been working on all my other pages. For some reason here it's not entering the onDataChanged after being connected to the DatabaseReference nor when I go into Firebase and mess with the data. I know onStart() is working because the onClick for my button is functioning correctly.
public class DocumentsPageFragment extends Fragment {
final DatabaseReference groupsReference = FirebaseDatabase.getInstance().getReferenceFromUrl("https://database.firebaseio.com/groups");
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.document_page,container,false);
}
@Override
public void onStart(){
super.onStart();
groupsReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String[] groupNames;
ArrayList<Group> groupArrayList = new ArrayList<Group>();
for (DataSnapshot group:dataSnapshot.getChildren()){
Group currentGroup = group.getValue(Group.class);
groupArrayList.add(currentGroup);
}
if(groupArrayList!= null && groupArrayList.size()<0){
groupNames = new String[groupArrayList.size()];
int i = 0;
for (Group group:groupArrayList){
groupNames[i] = group.getName();
i++;
}
}
else{
groupNames = new String[0];
}
final ListView groupsListView = (ListView) getActivity().findViewById(R.id.documents_groups_listview);
ArrayAdapter<String> groupListArrayAdapter =
new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,groupNames);
groupsListView.setAdapter(groupListArrayAdapter);
AdapterView.OnItemClickListener groupListViewClickListener =
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
openSelectedGroupsDocuments(groupsListView.getItemAtPosition(position).toString());
}
};
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Button uploadButton = (Button) getActivity().findViewById(R.id.documents_upload_doc_button);
uploadButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View view){
DocumentUploadFragment fragment = new DocumentUploadFragment();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.flContent,fragment).commit();
}
});
}