Как заставить Firestore Recycler Adapter загружать живые данные не из кеша - PullRequest
0 голосов
/ 03 марта 2020

Я хочу, чтобы firecycle store recyclerview загружал данные только с сервера, а не из кэша. «Я хочу, чтобы адаптер ничего не отображал, если устройство находится в автономном режиме.» Но я не знаю, как это сделать, и я искал его. Я нашел способ сделать это в обычном get(); методе только для извлечения определенных c данных, но я не нашел никого, кто бы объяснил, как это сделать с помощью пожарного адаптера firebase.

это мой код MainActivity .

public class MainActivity extends AppCompatActivity {
    private FirebaseFirestore db;
    RecyclerView recyclerView;
    private FirestoreRecyclerviewAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        db=FirebaseFirestore.getInstance();

        //Query
        Query query = db.collection("collection");
        FirestoreRecyclerOptions<ItemClass> options=new FirestoreRecyclerOptions.Builder<ItemClass>()
                .setQuery(query, ItemClass.class)
                .build();

        recyclerView=findViewById(R.id.recycler);
        final LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);

        adapter = new FirestoreRecyclerviewAdapter( options, this );

        recyclerView.setAdapter(adapter);
        recyclerView.setLayoutManager(layoutManager);

    }

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

    @Override
    protected void onStop() {
        super.onStop();
        adapter.stopListening();
    }

, а это класс адаптера ... Адаптер Firestore

public class FirestoreRecyclerviewAdapter  extends FirestoreRecyclerAdapter<ItemClass, FirestoreRecyclerviewAdapter.MyViewHolder> {

    public FirestoreRecyclerviewAdapter (@NonNull FirestoreRecyclerOptions<ItemClass> options) {
        super(options);
    }

    @Override
    protected void onBindViewHolder(@NonNull MyViewHolder holder, int position, @NonNull ItemClass item) {
        //Binding code.

    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new MyViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false));
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        //view components

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            //initializing item components
        }
    }
}

1 Ответ

1 голос
/ 04 марта 2020

Самым простым подходом, который я могу придумать, является отключение сохранения диска , которое вы можете сделать с помощью:

FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
        .setPersistenceEnabled(false)
        .build();
db.setFirestoreSettings(settings);
...