0

문제 :어댑터 내 ProgressDialog

나는 특정 사용자의 일정을 보여주는 화면이 있습니다.

동시에 일정이 이미 사용되고 있는지 확인하고 배경색을 어두운 색으로 지정해야합니다.

인쇄 1 : 일정이있는 RecyclerView 화면.

인쇄 2 : 동일한 화면이지만 사용 가능한 일정을 확인한 후.

참고 : Wi-Fi 네트워크를 사용하는 경우 충전이 빠르지 만 모바일 인터넷 네트워크 인 경우 속도가 매우 느립니다.

Print 1Print 2

나는 정확히 일정의 검사가 완료되는 순간에, 내 어댑터 내부해서 ProgressDialog를 추가 할 수있는 방법이 필요합니다. 여기에

:

/*Checar Horario disponivel*/ 
      final FirebaseFirestore mDB = FirebaseFirestore.getInstance(); 
      CollectionReference mDBHorarios = mDB.collection("Empresas").document(empresa).collection("Agendamentos"); 

      mDBHorarios.whereEqualTo("profissional_id", ref.getId_Prof()).whereEqualTo("agenda_hora", ref.getHora()) 
        .get() 
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { 
         @Override 
         public void onComplete(@NonNull Task<QuerySnapshot> task) { 
          if (task.isSuccessful()) { 
           for (DocumentSnapshot document : task.getResult()) { 

            Agendamentos doc = document.toObject(Agendamentos.class); 

            String horaAgenda = doc.getAgenda_hora(); 
            /*Cor do fundo*/ 
            if (horaAgenda.equals(ref.getHora())){ 

             fundoHora.setBackgroundColor(Color.parseColor("#E0E0E0")); 
             statusHoraAgenda = true; 


            } 

           } 
          } else { 

          } 
         } 
        }); 

주 : 이것은 좋은 방법이 아니라고 그것은있을 수 있습니다. RecyclerView에서이 쿼리를 수행하는 더 좋은 방법이 있다면 제안을 수락합니다.

코드 전체 - 어댑터 :

public class HorariosProfissionalAdapter extends FirestoreAdapter<HorariosProfissionalAdapter.ViewHolder>{ 

    public interface OnHorariosProfissionaisListner { 

     void onHorarioProfissionaisSelected(DocumentSnapshot horariosProfissional); 

    } 

    private OnHorariosProfissionaisListner mListner; 

    public HorariosProfissionalAdapter(Query query, OnHorariosProfissionaisListner listner){ 

     super(query); 
     mListner = listner; 

    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 
     return new ViewHolder(inflater.inflate(R.layout.card_horarios_profissional, parent, false)); 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 
     holder.bind(getSnapshot(position), mListner); 
    } 

    static class ViewHolder extends RecyclerView.ViewHolder { 

     private Boolean statusHoraAgenda = false; 

     @BindView(R.id.tvHoraProf) 
     TextView hora; 

     @BindView(R.id.fundoHorario) 
     LinearLayout fundoHora; 





     public ViewHolder(View itemView) { 
      super(itemView); 
      ButterKnife.bind(this, itemView); 
     } 


     public void bind(final DocumentSnapshot snapshot, 
         final OnHorariosProfissionaisListner listener) { 

      final HorariosProfissionais ref = snapshot.toObject(HorariosProfissionais.class); 
      String empresa = ref.getId_Emp(); 


      /*Checar Horario disponivel*/ 
      final FirebaseFirestore mDB = FirebaseFirestore.getInstance(); 
      CollectionReference mDBHorarios = mDB.collection("Empresas").document(empresa).collection("Agendamentos"); 

      mDBHorarios.whereEqualTo("profissional_id", ref.getId_Prof()).whereEqualTo("agenda_hora", ref.getHora()) 
        .get() 
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { 
         @Override 
         public void onComplete(@NonNull Task<QuerySnapshot> task) { 
          if (task.isSuccessful()) { 
           for (DocumentSnapshot document : task.getResult()) { 

            Agendamentos doc = document.toObject(Agendamentos.class); 

            String horaAgenda = doc.getAgenda_hora(); 
            /*Cor do fundo*/ 
            if (horaAgenda.equals(ref.getHora())){ 

             fundoHora.setBackgroundColor(Color.parseColor("#E0E0E0")); 
             statusHoraAgenda = true; 


            } 

           } 
          } else { 

          } 
         } 
        }); 



      hora.setText(ref.getHora()); 


      // Click listener 
      itemView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        if (listener != null && !statusHoraAgenda) { 
         listener.onHorarioProfissionaisSelected(snapshot); 
        } 
       } 
      }); 
     } 

    } 
} 

코드 전체 - 활동 :

public class Agenda_profissionais extends AppCompatActivity implements HorariosProfissionalAdapter.OnHorariosProfissionaisListner { 

    private String mId_Empresa = null; 
    private String mId_Profissional = null; 
    private String mNome_Profissional = null; 

    private RecyclerView mCardHorarios; 
    private HorariosProfissionalAdapter mAdapter; 
    private FirebaseFirestore mFirestore; 
    private Query mQuery; 

    private ProgressDialog mProgress; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_agenda_profissionais); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setTitle("Horario"); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 



     /* CONFIGURAÇÃO TOOLBAR*/ 
     Bundle extra = getIntent().getExtras(); 
     if (extra != null){ 

      mId_Empresa = extra.getString("id_empresa"); 
      mId_Profissional = extra.getString("id_profissional"); 
      mNome_Profissional = extra.getString("nome_profissional"); 

     } 



     /*Firebase*/ 
     mFirestore = FirebaseFirestore.getInstance(); 
     mQuery = mFirestore.collection("Empresas").document(mId_Empresa).collection("Profissionais").document(mId_Profissional).collection("Horarios"); 

     mCardHorarios = (RecyclerView) findViewById(R.id.cardListaHorariosProf); 

     mAdapter = new HorariosProfissionalAdapter(mQuery, this){ 

      @Override 
      protected void onDataChanged() { 

       if (getItemCount() == 0) { 
        mCardHorarios.setVisibility(View.GONE); 
        //mTxtVazio.setVisibility(View.VISIBLE); 

       } else { 
        mCardHorarios.setVisibility(View.VISIBLE); 


       } 

      } 
     }; 

     mCardHorarios.setLayoutManager(new LinearLayoutManager(this)); 
     mCardHorarios.setAdapter(mAdapter); 


    } 



    @Override 
    public void onStart() { 
     super.onStart(); 

     // Start listening for Firestore updates 
     if (mAdapter != null) { 
      mAdapter.startListening(); 
     } 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
     if (mAdapter != null) { 
      mAdapter.stopListening(); 
     } 
    } 

    @Override 
    public void onHorarioProfissionaisSelected(DocumentSnapshot horario) { 


     HorariosProfissionais idHorario = horario.toObject(HorariosProfissionais.class); 
     Toast.makeText(Agenda_profissionais.this, "Horario selecionado: " +idHorario.getHora(), Toast.LENGTH_LONG).show(); 


    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_agendamento, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      // Respond to the action bar's Up/Home button 
      case android.R.id.home: 
       finish(); 
       return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 


    @Override 
    public void onBackPressed() { 

     finish(); 

    } 

} 

답변

0

솔루션

public void bind(final DocumentSnapshot snapshot, 
         final OnHorariosProfissionaisListner listener) { 

      final HorariosProfissionais ref = snapshot.toObject(HorariosProfissionais.class); 
      String empresa = ref.getId_Emp(); 

      mProgress = new ProgressDialog(itemView.getContext()); 
      mProgress.setMessage("testando...."); 
      mProgress.show(); 

      /*Checar Horario disponivel*/ 
      final FirebaseFirestore mDB = FirebaseFirestore.getInstance(); 
      CollectionReference mDBHorarios = mDB.collection("Empresas").document(empresa).collection("Agendamentos"); 

      mDBHorarios.whereEqualTo("profissional_id", ref.getId_Prof()).whereEqualTo("agenda_hora", ref.getHora()) 
        .get() 
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { 
         @Override 
         public void onComplete(@NonNull Task<QuerySnapshot> task) { 

          if (task.isSuccessful()) { 

           for (DocumentSnapshot document : task.getResult()) { 

            Agendamentos doc = document.toObject(Agendamentos.class); 

            String horaAgenda = doc.getAgenda_hora(); 
            /*Cor do fundo*/ 
            if (horaAgenda.equals(ref.getHora())){ 

             fundoHora.setBackgroundColor(Color.parseColor("#E0E0E0")); 
             statusHoraAgenda = true; 



            } 

           } 

           mProgress.dismiss(); 

          } else { 

          } 
         } 
        });