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 { 

          } 
         } 
        }); 
関連する問題