I was trying to fetch some data from firebase and this is one of the activity of my project.This activity is crashing as soon as it opens. Data fetching is good is we pass reference directly on to child(),but when we try to pass any String variable- which is assigned from a editText- throwing problem. Here what I have found is that the studentBranch variable is getting assigned a new value from the " studentYear=(String) yearSelect.getText().toString()" method but it is not passed onto the firebase reference child(). help me to fix this !, I'm completely a noob in android development
package com.example.presence;
import static android.content.ContentValues.TAG;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.FirebaseDatabase;
public class viewStudentsDetails_Activity extends AppCompatActivity{
RecyclerView recView;
Button fetch;
EditText branchSelect,yearSelect;
viewStudentAdapter myadapter;
public String studentBranch;
public String studentYear;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_students_details);
recView=findViewById(R.id.recView);
fetch=findViewById(R.id.buttonFetch);
branchSelect=findViewById(R.id.editTextDepartment);
yearSelect=findViewById(R.id.editTextYear);
recView.setLayoutManager(new LinearLayoutManager(this));
fetch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
studentYear=(String) yearSelect.getText().toString();
studentBranch=(String) branchSelect.getText().toString();
//reference=database.getReference().;
FirebaseRecyclerOptions<viewStudelModelclass> options =
new FirebaseRecyclerOptions.Builder<viewStudelModelclass>()
.setQuery(FirebaseDatabase.getInstance().getReference().child("students").child(studentBranch).child(studentYear), viewStudelModelclass.class)
.build();
myadapter=new viewStudentAdapter(options);
recView.setAdapter(myadapter);
}
});
DividerItemDecoration dividerItemDecoration=new DividerItemDecoration(getApplicationContext(),DividerItemDecoration.VERTICAL);
recView.addItemDecoration(dividerItemDecoration);
}
@Override
protected void onStart() {
super.onStart();
myadapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
myadapter.stopListening();
}
}
here is my XML code
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".viewStudentsDetails_Activity"
android:gravity="center_horizontal">
<TextView
android:id="@+id/textView10"
android:layout_width="150dp"
android:layout_height="36dp"
android:gravity="center"
android:text="Department"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.141"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.045" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recView"
android:layout_width="match_parent"
android:layout_height="400dp"
android:layout_alignParentBottom="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.921"
tools:ignore="MissingConstraints" >
</androidx.recyclerview.widget.RecyclerView>
<EditText
android:id="@+id/editTextDepartment"
android:layout_width="126dp"
android:layout_height="48dp"
android:ems="10"
android:hint="eg: ME"
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.859"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.028" />
<TextView
android:id="@+id/textView11"
android:layout_width="150dp"
android:layout_height="36dp"
android:gravity="center"
android:text="Year"
android:textSize="19dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.141"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.137" />
<EditText
android:id="@+id/editTextYear"
android:layout_width="126dp"
android:layout_height="48dp"
android:ems="10"
android:hint="eg: 2016"
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.859"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.138" />
<Button
android:id="@+id/buttonFetch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fetch Details"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.248" />
</androidx.constraintlayout.widget.ConstraintLayout>