O layout não aparece na minha fragment
05/04/2024
0
estou programando um aplicativo pro meu tcc e simplesmente, depois de adicionar os metodos de deleção e edição de tarefas, o layout que retornava as tarefas cadastradas pelo usuário não aparecem mais.
segue o codigo da minha fragment, que O ANDROID STUDIO DIZ NÃO TER NENHUM ERRO, to ficando maluco tentando consertar isso já, alguem ME AJUDAAAA
public class CalendarFragment extends Fragment {
private RecyclerView reciclagem;
private FloatingActionButton aBotao;
private FirebaseFirestore firestore;
private TarefasAdapter adapter;
private List<TarefasModel> mList;
private Query query;
private ListenerRegistration listRegis;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_calendar, container, false);
reciclagem = view.findViewById(R.id.recyclerlview);
aBotao = view.findViewById(R.id.floatingActionButton2);
firestore = FirebaseFirestore.getInstance();
reciclagem.setHasFixedSize(true);
reciclagem.setLayoutManager(new LinearLayoutManager(getContext()));
aBotao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
NovaTarefa.newInstance().show(getChildFragmentManager(), NovaTarefa.TAG);
}
});
mList = new ArrayList<>();
adapter = new TarefasAdapter(this, mList);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new TouchHelper(adapter));
itemTouchHelper.attachToRecyclerView(reciclagem);
mostrarData();
reciclagem.setAdapter(adapter);
return view;
}
private void mostrarData() {
query = firestore.collection("tarefa").orderBy("hora", Query.Direction.DESCENDING);
listRegis = query.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException error) {
for (DocumentChange documentChange : value.getDocumentChanges()) {
if (documentChange.getType() == DocumentChange.Type.ADDED) {
String id = documentChange.getDocument().getId();
TarefasModel tarefasModel = documentChange.getDocument().toObject(TarefasModel.class).withId(id);
mList.add(tarefasModel);
adapter.notifyDataSetChanged();
}
}
listRegis.remove();
}
});
}
public void onDialogClose(DialogInterface dialogInterface)
{
mList.clear();
mostrarData();
adapter.notifyDataSetChanged();
}
@Override
public void onDestroy() {
super.onDestroy();
if (listRegis != null) {
listRegis.remove();
}
}
}
adapter que eu acredito ser responsável pela aprição das tarefas na fragment:
public class TarefasAdapter extends RecyclerView.Adapter<TarefasAdapter.MyViewHolder> {
private List<TarefasModel> listaTarefas;
private CalendarFragment cfragment;
private FirebaseFirestore firestore;
public TarefasAdapter(CalendarFragment calendarFragment, List<TarefasModel> listaTarefas){
this.listaTarefas = listaTarefas;
cfragment = calendarFragment ;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.tarefas, parent, false);
firestore = FirebaseFirestore.getInstance();
return new MyViewHolder(view);
}
public void delTarefa(int position){
TarefasModel tarefasModel = listaTarefas.get(position);
firestore.collection("tarefa").document(tarefasModel.TarefasId).delete();
listaTarefas.remove(position);
notifyItemRemoved(position);
}
public CalendarFragment getContext() {return cfragment;}
public void ediTarefa(int position){
TarefasModel tarefasModel = listaTarefas.get(position);
Bundle bundle = new Bundle();
bundle.putString("tarefa", tarefasModel.getTarefa());
bundle.putString("pendente", tarefasModel.getPendente());
bundle.putString("id", tarefasModel.TarefasId);
NovaTarefa addNovaTarefa = new NovaTarefa();
addNovaTarefa.setArguments(bundle);
addNovaTarefa.show(cfragment.getActivity().getSupportFragmentManager(), addNovaTarefa.getTag());
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
TarefasModel tarefasModel = listaTarefas.get(position);
holder.mCheckBox.setText(tarefasModel.getTarefa());
holder.txtData.setText("a fazer " + tarefasModel.getPendente());
holder.mCheckBox.setChecked(toBoolean(tarefasModel.getStatus()));
holder.mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked){
firestore.collection("tarefa").document(tarefasModel.TarefasId).update("status", 1);
}else{
firestore.collection("tarefa").document(tarefasModel.TarefasId).update("status", 0);
}
}
});
}
private boolean toBoolean(int status){
return status != 0;
}
@Override
public int getItemCount() {
return listaTarefas.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder{
TextView txtData;
CheckBox mCheckBox;
public MyViewHolder(@NonNull View itemView){
super(itemView);
txtData = itemView.findViewById(R.id.txtdata);
mCheckBox = itemView.findViewById(R.id.mCheckBox);
}
}
}
sou novo na área de programação e estou terminando um técnico, quem puder me ajudar, serei E T E R N A M E N T E grato!
obs: as tarefas conseguem ser cadastradas numa boa, ficam no banco e tudo, elas só não estão aparecendo na fragment
segue o codigo da minha fragment, que O ANDROID STUDIO DIZ NÃO TER NENHUM ERRO, to ficando maluco tentando consertar isso já, alguem ME AJUDAAAA
public class CalendarFragment extends Fragment {
private RecyclerView reciclagem;
private FloatingActionButton aBotao;
private FirebaseFirestore firestore;
private TarefasAdapter adapter;
private List<TarefasModel> mList;
private Query query;
private ListenerRegistration listRegis;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_calendar, container, false);
reciclagem = view.findViewById(R.id.recyclerlview);
aBotao = view.findViewById(R.id.floatingActionButton2);
firestore = FirebaseFirestore.getInstance();
reciclagem.setHasFixedSize(true);
reciclagem.setLayoutManager(new LinearLayoutManager(getContext()));
aBotao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
NovaTarefa.newInstance().show(getChildFragmentManager(), NovaTarefa.TAG);
}
});
mList = new ArrayList<>();
adapter = new TarefasAdapter(this, mList);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new TouchHelper(adapter));
itemTouchHelper.attachToRecyclerView(reciclagem);
mostrarData();
reciclagem.setAdapter(adapter);
return view;
}
private void mostrarData() {
query = firestore.collection("tarefa").orderBy("hora", Query.Direction.DESCENDING);
listRegis = query.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException error) {
for (DocumentChange documentChange : value.getDocumentChanges()) {
if (documentChange.getType() == DocumentChange.Type.ADDED) {
String id = documentChange.getDocument().getId();
TarefasModel tarefasModel = documentChange.getDocument().toObject(TarefasModel.class).withId(id);
mList.add(tarefasModel);
adapter.notifyDataSetChanged();
}
}
listRegis.remove();
}
});
}
public void onDialogClose(DialogInterface dialogInterface)
{
mList.clear();
mostrarData();
adapter.notifyDataSetChanged();
}
@Override
public void onDestroy() {
super.onDestroy();
if (listRegis != null) {
listRegis.remove();
}
}
}
adapter que eu acredito ser responsável pela aprição das tarefas na fragment:
public class TarefasAdapter extends RecyclerView.Adapter<TarefasAdapter.MyViewHolder> {
private List<TarefasModel> listaTarefas;
private CalendarFragment cfragment;
private FirebaseFirestore firestore;
public TarefasAdapter(CalendarFragment calendarFragment, List<TarefasModel> listaTarefas){
this.listaTarefas = listaTarefas;
cfragment = calendarFragment ;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.tarefas, parent, false);
firestore = FirebaseFirestore.getInstance();
return new MyViewHolder(view);
}
public void delTarefa(int position){
TarefasModel tarefasModel = listaTarefas.get(position);
firestore.collection("tarefa").document(tarefasModel.TarefasId).delete();
listaTarefas.remove(position);
notifyItemRemoved(position);
}
public CalendarFragment getContext() {return cfragment;}
public void ediTarefa(int position){
TarefasModel tarefasModel = listaTarefas.get(position);
Bundle bundle = new Bundle();
bundle.putString("tarefa", tarefasModel.getTarefa());
bundle.putString("pendente", tarefasModel.getPendente());
bundle.putString("id", tarefasModel.TarefasId);
NovaTarefa addNovaTarefa = new NovaTarefa();
addNovaTarefa.setArguments(bundle);
addNovaTarefa.show(cfragment.getActivity().getSupportFragmentManager(), addNovaTarefa.getTag());
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
TarefasModel tarefasModel = listaTarefas.get(position);
holder.mCheckBox.setText(tarefasModel.getTarefa());
holder.txtData.setText("a fazer " + tarefasModel.getPendente());
holder.mCheckBox.setChecked(toBoolean(tarefasModel.getStatus()));
holder.mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked){
firestore.collection("tarefa").document(tarefasModel.TarefasId).update("status", 1);
}else{
firestore.collection("tarefa").document(tarefasModel.TarefasId).update("status", 0);
}
}
});
}
private boolean toBoolean(int status){
return status != 0;
}
@Override
public int getItemCount() {
return listaTarefas.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder{
TextView txtData;
CheckBox mCheckBox;
public MyViewHolder(@NonNull View itemView){
super(itemView);
txtData = itemView.findViewById(R.id.txtdata);
mCheckBox = itemView.findViewById(R.id.mCheckBox);
}
}
}
sou novo na área de programação e estou terminando um técnico, quem puder me ajudar, serei E T E R N A M E N T E grato!
obs: as tarefas conseguem ser cadastradas numa boa, ficam no banco e tudo, elas só não estão aparecendo na fragment
Murillo
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)