Hello I am relatively new to firebase and I've seen that there is new implementation of firebase recyclerview adaptor for fragment. My problem is that the app won't populate my recyclerview. Here is what I have as a code
my Fragment
public class DummyFragment extends android.support.v4.app.Fragment {
private FirebaseRecyclerAdapter<Product, ProductViewHolder> mFirebaseAdapter;
private RecyclerView mProduceList = null;
private View rootView;
private Context c;
private LinearLayoutManager manager;
public DummyFragment() {}
public static DummyFragment newInstance() {
DummyFragment fragment = new DummyFragment();
return fragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.dummy_fragment, container, false);
FirebaseApp.initializeApp(c);
mProduceList = rootView.findViewById(R.id.recyclerView);
mProduceList.hasFixedSize();
mProduceList.setLayoutManager(new LinearLayoutManager(getActivity()));
DatabaseReference productRef = FirebaseDatabase.getInstance().getReference().child("Product1");
Query productQuery = productRef.orderByKey();
FirebaseRecyclerOptions productOptions = new FirebaseRecyclerOptions.Builder<Product>().setQuery(productQuery, Product.class).build();
mFirebaseAdapter = new FirebaseRecyclerAdapter<Product, ProductViewHolder>(productOptions) {
@Override
public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View rootView = LayoutInflater.from(c).inflate(R.layout.dummy_fragment, parent, false);
return new ProductViewHolder(rootView);
}
@Override
protected void onBindViewHolder(ProductViewHolder viewHolder, int position, Product model) {
viewHolder.setTitle(model.getTitle());
viewHolder.setDesc(model.getDesc());
}
};
mProduceList.setAdapter(mFirebaseAdapter);
return rootView;
};
@Override
public void onStart() {
super.onStart();
mFirebaseAdapter.startListening();
}
@Override
public void onStop() {
super.onStop();
mFirebaseAdapter.stopListening();
}
public static class ProductViewHolder extends RecyclerView.ViewHolder {
View mView;
public ProductViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setTitle(String name) {
TextView post_name = (TextView) mView.findViewById(R.id.productTitle);
post_name.setText(name);
}
public void setDesc(String type) {
TextView post_type = (TextView) mView.findViewById(R.id.productDesc);
post_type.setText(type);
}
}
}
Product class
public class Product {
String Title,Description;
private String image;
public Product(){}
public Product(String title,String desc, String image){
Title = title;
Description = desc;
this.image = image;
}
public String getTitle() {
return Title;
}
public void setTitle(String title) {
Title = title;
}
public String getDesc() {
return Description;
}
public void setDesc(String desc) {
Description = desc;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
}
and my manifest
<?xml version="1.0" encoding="utf-8"?>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.DayNight.NoActionBar">
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
I dont see a reason why it won't populate the recyclerview but I guess I am missing something. This is a message that I have in my console as well W/FA: Service connection failed: ConnectionResult{statusCode=SERVICE_VERSION_UPDATE_REQUIRED, resolution=null, message=null} I/FA: Tag Manager is not found and thus will not be used D/FA: Logging event (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, firebase_screen_class(_sc)=MainActivity, firebase_screen_id(_si)=-7534482907761949523}] V/FA: Connecting to remote service W/GooglePlayServicesUtil: Google Play services out of date. Requires 11910000 but found 9879470 V/FA: Processing queued up service tasks: 4 E/FA: Discarding data. Failed to send app launch E/FA: Failed to get app instance id E/FA: Failed to send current screen to service E/FA: Discarding data. Failed to send event to service [ 03-15 00:06:26.003 5399: 5417 D/ ] HostConnection::get() New Host Connection established 0x98c0ac40, tid 5417