FirebaseRecyclerAdaptor не заполняет recyclerview

Здравствуйте, я относительно новичок в firebase, и я видел, что есть новая реализация адаптера firebase recyclerview для фрагмента. Моя проблема в том, что приложение не заполняет мой recyclerview. Вот что у меня в виде кода

мой фрагмент

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);
    }
}
}

Класс продукта

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;
}
}

и мой манифест

<?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>

Я не вижу причины, по которой он не заполняет recyclerview, но я думаю, что мне что-то не хватает. Это сообщение, которое у меня также есть в моей консоли W / FA: Ошибка подключения службы: ConnectionResult {statusCode = SERVICE_VERSION_UPDATE_REQUIRED, resolution = null, message = null} I / FA: Диспетчер тегов не найден и поэтому не будет использоваться D / FA: событие журнала (FE): screen_view (_vs), Bundle [{firebase_event_origin (_o) = auto, firebase_screen_class (_sc) = MainActivity, firebase_screen_id (_si) = - 7534482907761949523}] V / FA: подключение к удаленному сервису W / GooglePlayServicesUtil: сервисы Google Play устарели. Требуется 11910000, но найдено 9879470 V / FA: Обработка поставленных в очередь сервисных задач: 4 E / FA: Отказ от данных. Не удалось отправить запуск приложения E / FA: не удалось получить идентификатор экземпляра приложения. E / FA: не удалось отправить текущий экран в сервис E / FA: Отказ от данных. Не удалось отправить событие в службу [03-15 00: 06: 26.003 5399: 5417 D /] HostConnection :: get () Установлено новое соединение с хостом 0x98c0ac40, tid 5417

1
0
84
2

Ответы 2

Выполните одно из следующих действий:

  1. Большинству сервисов Firebase требуются обновленные сервисы Google Play, поэтому вам нужно будет протестировать его на эмуляторе Android, а не на Geneymotion.
  2. Если вы используете телефонную аутентификацию, ваш единственный вариант - использовать настоящую устройство.
  3. Иногда вам нужно будет обновить свое настоящее устройство Google игровые сервисы: для этого проще всего будет использовать приложение называется: Play Services Info

Привет, возможно ли, что мои зависимости неверны?

redberry 15.03.2018 11:46

Я использую эмулятор Android

redberry 15.03.2018 11:53

Начинается с Android Studio 2.3.2, есть предустановленный магазин воспроизведения, откройте его и установите приложение Play Services Info, которое поможет вам проверить и обновить Play Services.

user9076758 15.03.2018 11:56

Хорошо, я делаю это прямо сейчас, кроме этого, видите ли вы какие-либо недостатки в коде?

redberry 15.03.2018 11:59

Чтобы решить эту проблему, удалите следующую строку кода:

mProduceList.hasFixedSize();

Для получения дополнительной информации, пожалуйста, ответьте на эту аналогичную проблему на Github.

Другие вопросы по теме