вызов представления в новом методе из onCreateview в android studio - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь вызвать «просмотр» из моего инфлатера в моем новом методе, но он не будет работать, он говорит, что не решен. если я переместить весь код в setUpRecyclerView в onCreateView, это работает. Есть ли способ заставить его работать так, как он есть, чтобы я мог сохранить мой onCreatView аккуратно? весь код в фрагменте. Я также попытался использовать getView.findViewById, но это также не сработало.

'' '

package com.example.hostapp;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.Query;

public class HomeFragment extends Fragment {

    private FirebaseFirestore db = FirebaseFirestore.getInstance();
    private CollectionReference categoryref = db.collection("categories");
    private categoryCardAdapter adapter;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_home, container, false);




        return view;
    }

    public void setUpRecyclerView (){
        Query query = categoryref.orderBy("name",Query.Direction.DESCENDING);

        FirestoreRecyclerOptions<categoryCard> options = new FirestoreRecyclerOptions.Builder<categoryCard>()
                .setQuery(query, categoryCard.class)
                .build();

        adapter = new categoryCardAdapter(options);

        RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recycler_category);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this.getActivity()));
        recyclerView.setAdapter(adapter);
    }

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

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

' ''

это код, который работает:

package com.example.hostapp;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.firebase.ui.firestore.FirestoreRecyclerOptions;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.Query;

public class HomeFragment extends Fragment {

    private FirebaseFirestore db = FirebaseFirestore.getInstance();
    private CollectionReference categoryref = db.collection("categories");
    private categoryCardAdapter adapter;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_home, container, false);


        Query query = categoryref.orderBy("name",Query.Direction.DESCENDING);

        FirestoreRecyclerOptions<categoryCard> options = new FirestoreRecyclerOptions.Builder<categoryCard>()
                .setQuery(query, categoryCard.class)
                .build();

        adapter = new categoryCardAdapter(options);

        **RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recycler_category);**
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this.getActivity()));
        recyclerView.setAdapter(adapter);

        return view;
    }

    public void setUpRecyclerView (){

    }

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

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

1 Ответ

0 голосов
/ 02 марта 2020

Вы не вызываете метод setupRecyclerView() в своем первом примере кода. Вы можете либо вызвать его из вашего createView() метода перед возвратом представления, либо вы можете вызвать метод из onViewCreated() метода. Я бы предпочел второй вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...