0
나는 특정 사용자의 일정을 보여주는 화면이 있습니다.
동시에 일정이 이미 사용되고 있는지 확인하고 배경색을 어두운 색으로 지정해야합니다.
인쇄 1 : 일정이있는 RecyclerView 화면.
인쇄 2 : 동일한 화면이지만 사용 가능한 일정을 확인한 후.
참고 : Wi-Fi 네트워크를 사용하는 경우 충전이 빠르지 만 모바일 인터넷 네트워크 인 경우 속도가 매우 느립니다.
나는 정확히 일정의 검사가 완료되는 순간에, 내 어댑터 내부해서 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();
}
}