У меня есть фрагмент в фрагменте, чтобы показать документы из коллекции в firestore, проблема в том, что он только извлекает определенные поля из документа, похоже, что он игнорирует некоторые другие поля Setter из класса модели, это это ошибка, которую я получаю:
W / Firestore: (0.6.6-dev) [zzko]: не найден установщик / поле для sabado
учебный класс
com.example.denilsondasilva.iasdmt.com.example.denilsondasilva.com.example.denilsondasilva.MODELS.ModelProgramas
Теперь вот мой класс модели:
public class ModelProgramas {
public ModelProgramas() {
}
public ModelProgramas(String sabado, String evento, String responsavel, String data, String horario) {
this.sabado = sabado;
this.evento = evento;
this.responsavel = responsavel;
this.data = data;
this.horario = horario;
}
public String getSabado() {
return sabado;
}
public void setSabado(String sabado) {
this.sabado = sabado;
}
public String getEvento() {
return evento;
}
public void setEvento(String evento) {
this.evento = evento;
}
public String getResponsavel() {
return responsavel;
}
public void setResponsavel(String responsavel) {
this.responsavel = responsavel;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String getHorario() {
return horario;
}
public void setHorario(String horario) {
this.horario = horario;
}
private String sabado;
private String evento;
private String responsavel;
private String data;
private String horario;
}
Я создал ПУСТОЙ КОНСТРУКТОР для класса, я создал КОНСТРУКТОРЫ для переменных, а также геттеры и сеттеры, и я видел предыдущие вопросы с той же проблемой, поэтому я знаю, что мои БУКВЫ И УСТАНОВКИ и переменные были созданы правильно. Переменные в нижнем регистре, геттеры и сеттеры, начинающиеся с верхнего регистра. и строки в документе firestore такие же, как созданные переменные
вот мой адаптер:
public class PROGRAMASrecyclerAdapter extends RecyclerView.Adapter<PROGRAMASrecyclerAdapter.Programasholder> {
Context ctx;
private List<ModelProgramas> Progs_list;
public PROGRAMASrecyclerAdapter(List<ModelProgramas> progs_list) {
this.Progs_list = progs_list;
}
@NonNull
@Override
public Programasholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
ctx = parent.getContext();
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.programas_list_item,parent,false);
return new Programasholder(view);
}
@Override
public void onBindViewHolder(@NonNull Programasholder holder, int position) {
final String sabado = Progs_list.get(position).getSabado();
holder.setSabado(sabado);
String evento = Progs_list.get(position).getEvento();
holder.setEvento(evento);
String responsavel = Progs_list.get(position).getResponsavel();
holder.setResponsavel(responsavel);
String data = Progs_list.get(position).getData();
holder.setData(data);
String horario = Progs_list.get(position).getHorario();
holder.setHorario(horario);
holder.mcardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(ctx, sabado, Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return Progs_list.size();
}
public class Programasholder extends RecyclerView.ViewHolder{
View mView;
private TextView Sabadotxt;
private TextView Eventotxt;
private TextView Responsaveltxt;
private TextView DatadoEventotxt;
private TextView Horariotxt;
private CardView mcardView;
public Programasholder(View itemView) {
super(itemView);
mView = itemView;
mcardView = mView.findViewById(R.id.listCard_Programas);
}
public void setSabado(String sabado){
Sabadotxt = mView.findViewById(R.id.Prog_sabadotxt);
Sabadotxt.setText(sabado);
}
public void setEvento(String evento){
Eventotxt = mView.findViewById(R.id.Prog_eventotxt);
Eventotxt.setText(evento);
}
public void setResponsavel(String responsavel){
Responsaveltxt = mView.findViewById(R.id.Prog_responsaveltxt);
Responsaveltxt.setText(responsavel);
}
public void setData(String data){
DatadoEventotxt = mView.findViewById(R.id.Prog_datadoEventotxt);
DatadoEventotxt.setText(data);
}
public void setHorario(String horario){
Horariotxt = mView.findViewById(R.id.Prog_horariotxt);
Horariotxt.setText(horario);
}
}
}
Я даже создал прослушиватель по щелчку на просмотре карты, чтобы отобразить найденную строку «sabado», чтобы увидеть, есть ли проблема в классе Viewholder, но это RETURNING NULL
и вот мой фрагмент класса:
public class ProgramasFragment extends Fragment {
View view;
private RecyclerView recyclerView;
private List<ModelProgramas> Progs_List;
private FirebaseFirestore firebaseFirestore;
PROGRAMASrecyclerAdapter programaSrecyclerAdapter;
public ProgramasFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_programas, container, false);
Progs_List = new ArrayList<>();
programaSrecyclerAdapter = new PROGRAMASrecyclerAdapter(Progs_List);
firebaseFirestore = FirebaseFirestore.getInstance();
recyclerView = view.findViewById(R.id.Recycler_ProgramasList);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(programaSrecyclerAdapter);
firebaseFirestore.collection("programasdatarde").addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
if (queryDocumentSnapshots == null){
String error = e.getCause().getMessage();
Toast.makeText(getActivity().getApplicationContext(), "Empty QUERY: "+error, Toast.LENGTH_SHORT).show();
}else{
for (DocumentChange doc: queryDocumentSnapshots.getDocumentChanges()){
if (doc.getType() == DocumentChange.Type.ADDED){
ModelProgramas modelProgramas = doc.getDocument().toObject(ModelProgramas.class);
Progs_List.add(modelProgramas);
programaSrecyclerAdapter.notifyDataSetChanged();
}
}
}
}
});
return view;
}
}
Я знаю, что проблема не в классе фрагментов и не в адаптере, я имею в виду, что я ДУМАЮ, потому что я просматривал их снова и снова, и у меня есть другие фрагменты с обзорами переработчиков, которые выполняют те же функции, и они не представляют такого рода ошибки.
ПОЖАЛУЙСТА, НЕ ОТМЕТЬТЕ ЭТОТ ДВОЙНОЙ ВОПРОС, ПОТОМУ ЧТО Я РАБОТАЛ ИЗ ВСЕХ ДРУГИХ РЕШЕНИЙ ПО ДРУГИМ СВЯЗАННЫМ ПОСТАМ, НО ЭТО НЕ РЕШАЕТ МОЕЙ ОШИБКИ! ПОЖАЛУЙСТА, ПОМОГИТЕ.
И структура данных такая.