How to display Firebase database data into a RecyclerView before filtering it with SearchBar?

763 views
Skip to first unread message

Timothy Dillan

unread,
Feb 19, 2018, 8:50:07 PM2/19/18
to Firebase Google Group
I'm trying to show Firebase data in RecyclerView with a SearchBar feature, but when I try in phone, the app does function correctly meaning currently it can be searched but doesn't show Firebase data before search like it filers it before even searching. As suggested by @AlexMamo at StackOverflow, I made my firebaseRecyclerAdapter variable global, erased FirebaseRecyclerAdapter<Penyakit, PenyakitActivity.PenyakitViewHolder>
And then added override method of:



But I get error at stopListening line, which says that  error: cannot find symbol method stopListening() .  Also, I'm trying to add a feature where when you press the RecyclerView, you get more details included (from Firebase of course) (Example of details included: more textview, googlemap stuff).
import android.content.Context;
import android.media.Image;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.Toolbar;

import com.bumptech.glide.Glide;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;

public class PenyakitActivity extends AppCompatActivity {

private EditText mSearchField1;
private ImageButton mSearchBtn1;

private RecyclerView mResultList1;

private DatabaseReference mPenyakitDatabaseReference1;

private FirebaseRecyclerAdapter<Penyakit, PenyakitViewHolder> firebaseRecyclerAdapter;




@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_penyakit);


mPenyakitDatabaseReference1 = FirebaseDatabase.getInstance().getReference("Penyakit");


mSearchField1 = (EditText) findViewById(R.id.search_field1);

mSearchBtn1 = (ImageButton) findViewById(R.id.search_btn1);

mResultList1 = (RecyclerView) findViewById(R.id.result_list1);
mResultList1.setHasFixedSize(true);
mResultList1.setLayoutManager(new LinearLayoutManager(this));



mSearchBtn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

String searchText = mSearchField1.getText().toString();

firebasePenyakitSearch(searchText);

}
});

}

@Override
protected void onStart() {
super.onStart();
firebaseRecyclerAdapter.startListening();
}

@Override
protected void onStop() {
super.onStop();
if(firebaseRecyclerAdapter != null) {
firebaseRecyclerAdapter.stopListening();
}


}



private void firebasePenyakitSearch(String searchText) {

Toast.makeText(PenyakitActivity.this, "Started Search", Toast.LENGTH_LONG).show();

Query firebaseSearchQuery = mPenyakitDatabaseReference1.orderByChild("name").startAt(searchText).endAt(searchText + "\uf8ff");

firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Penyakit, PenyakitViewHolder>(

Penyakit.class,
R.layout.list_layout,
PenyakitActivity.PenyakitViewHolder.class,
firebaseSearchQuery

) {
@Override
protected void populateViewHolder(PenyakitActivity.PenyakitViewHolder viewHolder, Penyakit model, int position) {


viewHolder.setDetails(getApplicationContext(), model.getName(), model.getStatus(), model.getImage());

}
};

mResultList1.setAdapter(firebaseRecyclerAdapter);

}


// View Holder Class

public class PenyakitViewHolder extends RecyclerView.ViewHolder {

View mView;

public PenyakitViewHolder(View itemView) {
super(itemView);

mView = itemView;

}

public void setDetails(Context ctx, String userName, String userStatus, String userImage){

TextView user_name = (TextView) mView.findViewById(R.id.name_text);
TextView user_status = (TextView) mView.findViewById(R.id.status_text);
ImageView user_image = (ImageView) mView.findViewById(R.id.profile_image);


user_name.setText(userName);
user_status.setText(userStatus);

Glide.with(ctx).load(userImage).into(user_image);


}




}

}

Samuel Stern

unread,
Feb 20, 2018, 11:08:58 AM2/20/18
to fireba...@googlegroups.com
Hi Timothy,

I can tell from your code that you're using a version of FirebaseUI before the stopListening() method was introduced.  In the version you're using there is a cleanup() method that is similar.  If you'd like to upgrade to the latest version (3.x) you can consult this migration guide:

- Sam

--
You received this message because you are subscribed to the Google Groups "Firebase Google Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firebase-tal...@googlegroups.com.
To post to this group, send email to fireba...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/firebase-talk/f75813ec-0c5b-4ab4-b39c-55a4193f4484%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages