Я пытаюсь вызвать «просмотр» из моего инфлатера в моем новом методе, но он не будет работать, он говорит, что не решен. если я переместить весь код в 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();
}
}