0

So, I watched some tutorial on how to do the RecyclerView mainly this. I tweaked the code to fit my needs. But when i try to ran it, the RecyclerView isn't displaying on the fragment. My guess is the problem lies in adapter and viewholder part, because i'm not sure how to implement it yet. Can anyone help me?

The Fragment.java

public class JobListFragment extends Fragment {

RecyclerView mRecyclerView;
FirebaseDatabase firebaseDatabase;
DatabaseReference databaseReference;

public JobListFragment(){

}

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    ((MainHomeActivity)getActivity()).setActionBarTitle("Job List");

    View view = inflater.inflate(R.layout.fragment_job_list, container, false);

    firebaseDatabase = FirebaseDatabase.getInstance();
    databaseReference = firebaseDatabase.getReference().child("Data");

    mRecyclerView = view.findViewById(R.id.recycleView);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
    mRecyclerView.setHasFixedSize(true);

    return view;
}

@Override
public void onStart() {
    super.onStart();
    FirebaseRecyclerOptions<Model> options =
            new FirebaseRecyclerOptions.Builder<Model>()
            .setQuery(databaseReference, Model.class).build();

    FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<Model, ViewHolder>(options) {
        @NonNull
        @Override
        public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            View view = LayoutInflater.from(viewGroup.getContext())
                    .inflate(R.layout.row, viewGroup, false);

            return new ViewHolder(view);
        }

        @Override
        protected void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull Model model) {
            holder.setDetails(model.getTitlept(), model.getDescpt(), model.getImagept());
        }
    };
    mRecyclerView.setAdapter(adapter);
}
}

ViewHolder.java

public class ViewHolder extends RecyclerView.ViewHolder {

View mView;

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

    mView = itemView;
}

public void setDetails(String title, String description, String image){
    TextView mTitleTv = mView.findViewById(R.id.rTitleTv);
    TextView mDescTv = mView.findViewById(R.id.rDescIv);
    ImageView mImageIv = mView.findViewById(R.id.rImageIv);

    mTitleTv.setText(title);
    mDescTv.setText(description);
    Picasso.get().load(image).into(mImageIv);
}
}

Model.java

public class Model {

String titlept, imagept, descpt;

public Model(){}

public String getTitlept() {
    return titlept;
}

public void setTitlept(String titlept) {
    this.titlept = titlept;
}

public String getImagept() {
    return imagept;
}

public void setImagept(String imagept) {
    this.imagept = imagept;
}

public String getDescpt() {
    return descpt;
}

public void setDescpt(String descpt) {
    this.descpt = descpt;
}
}
Abhimanyu
  • 11,351
  • 7
  • 51
  • 121
  • Looked at an article here [link](https://medium.com/android-grid/how-to-use-firebaserecycleradpater-with-latest-firebase-dependencies-in-android-aff7a33adb8b). It seems you might be missing step 13. `adapter.startListening();` and `adapter.stopListening();` – zabson May 13 '19 at 07:35

1 Answers1

0

Can you write the problem a little bit more clearly? Picture not displayed? @AdhityoPutro

coding123
  • 1
  • 1
  • 6