I am trying to get the value of the course section into my spinner when I select the course name from my previous spinner. But it is not finding the key and its value but it is there. I don't know where I am doing wrong.
This is my firebase database structre:
"Courses Details" : {
"Bs-BBA" : {
"-MVuhKkfxjHkZmTfsITM" : {
"Economics" : {
"courseName" : "Economics",
"courseSection" : "A", // These are the values that i am tryng my spinner to get populated with
"dayOfCourse" : "Tuesday",
"endingTime" : "1:30Pm",
"programName" : "Bs-BBA",
"startingTime" : "12:00Pm"
}
}
},
"Bscs" : {
"-MVWl1uq9fA4AlYRfMIv" : {
"Data structure" : {
"courseName" : "Data structure",
"courseSection" : "A",
"dayOfCourse" : "Monday",
"endingTime" : "9:30AM",
"programName" : "Bscs",
"startingTime" : "8:00AM"
}
},
"-MVY9hGxrp8Lz4JTOefy" : {
"OOP" : {
"courseName" : "OOP",
"courseSection" : "A",
"dayOfCourse" : "Thursday",
"endingTime" : "9:00AM",
"programName" : "Bscs",
"startingTime" : "8:00AM"
}
},
"-MVYHM0c7cMLersoUl2i" : {
"Marketing Fundamental" : {
"courseName" : "Marketing Fundamental",
"courseSection" : "A",
"dayOfCourse" : "Thursday",
"endingTime" : "9:00AM",
"programName" : "Bscs",
"startingTime" : "8:00AM"
}
}
},
"Bsse" : {
"-MVYHB3X_d4UozbBUDa3" : {
"Marketing Fundamental" : {
"courseName" : "Marketing Fundamental",
"courseSection" : "A",
"dayOfCourse" : "Thursday",
"endingTime" : "9:00AM",
"programName" : "Bsse",
"startingTime" : "8:00AM"
}
}
}
},
For example, if I select the course name from program Bs-BBA or from any of the courses it should populate the course section spinner on the basis of my selection from the course name spinner.
Below is the java code for this that I have implemented so far:
spinnerForCourseSection = findViewById(R.id.course_sec) ;
spinnerForCourseSecArrayList = new ArrayList<>();
spinnerForCourseSecArrayAdapter =new ArrayAdapter<String>(AssignCoursesToFaculty.this, android.R.layout.simple_spinner_dropdown_item, spinnerForCourseSecArrayList);
spinnerForCourseSection.setAdapter(spinnerForCourseSecArrayAdapter);
spinnerForCourseName.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
// if ( parent.getItemAtPosition(position).equals(spinnerForProgramNameArrayList) )
//{ }
String selectedValueFromSpinnerProgramName = spinnerForProgramName.getSelectedItem().toString() ;
String selectedValueFromSpinnerCourseName = spinnerForCourseName.getSelectedItem().toString() ;
ValueEventListener listener;
final DatabaseReference rootRef;
rootRef = FirebaseDatabase.getInstance().getReference().child("Courses Details");
listener = rootRef.addValueEventListener( new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot snapshot)
{
//if( snapshot.child(selectedValueFromSpinnerCourseName).exists() )
//{
spinnerForCourseSecArrayList.clear();
for( DataSnapshot programNameKey: snapshot.getChildren() )
{
for (DataSnapshot courseNameKey : programNameKey.getChildren())
{
for (DataSnapshot courseNameDetails : courseNameKey.child(selectedValueFromSpinnerCourseName).getChildren())
{
if (courseNameDetails.child("courseSection").exists())
{
spinnerForCourseSecArrayList.add(courseNameDetails.child("courseSection").getValue().toString());
}
}
}
}
spinnerForCourseSecArrayAdapter.notifyDataSetChanged();
//}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
@Override
public void onNothingSelected(AdapterView<?> parent)
{
}
});
The proper solution for the above question is below:
spinnerForCourseSection = findViewById(R.id.course_sec) ;
spinnerForCourseSecArrayList = new ArrayList<>();
spinnerForCourseSecArrayAdapter =new ArrayAdapter<String>(AssignCoursesToFaculty.this, android.R.layout.simple_spinner_dropdown_item, spinnerForCourseSecArrayList);
spinnerForCourseSection.setAdapter(spinnerForCourseSecArrayAdapter);
spinnerForCourseName.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
String selectedValueFromSpinnerProgramName = spinnerForProgramName.getSelectedItem().toString() ;
String selectedValueFromSpinnerCourseName = spinnerForCourseName.getSelectedItem().toString() ;
ValueEventListener listener;
final DatabaseReference rootRef;
rootRef = FirebaseDatabase.getInstance().getReference().child("Courses Details");
listener = rootRef.addValueEventListener( new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot snapshot)
{
spinnerForCourseSecArrayList.clear();
for( DataSnapshot programNameKey: snapshot.getChildren() )
{
for (DataSnapshot randomIdKey : programNameKey.getChildren())
{
for (DataSnapshot courseNameKey : randomIdKey.child(selectedValueFromSpinnerCourseName).getChildren())
{
String courseNameDetail = courseNameKey.getKey();
if( courseNameKey.child(courseNameDetail).getKey().equals("courseSection") )
{
spinnerForCourseSecArrayList.add(courseNameKey.getValue().toString());
}
}
}
}
spinnerForCourseSecArrayAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error)
{
}
});
}
@Override
public void onNothingSelected(AdapterView<?> parent)
{
}
});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.