FirebaseUI RecyclerView не отображается при запросе на изменение - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь сделать вид рециркулятора, где он содержит Reports и есть 2 кнопки public report и my report. При щелчке по моему отчету он будет отображать только отчет, основанный на текущем вошедшем в систему пользователе, где, как при щелчке по общему отчету, будут отображаться все отчеты. На данный момент мне удалось заполнить данные в представлении переработчика, однако всякий раз, когда я пытаюсь нажать на одну из кнопок, ничего не отображается, как если бы представление переработчика удалялось.

Нет проблем с адаптером, возможно, существует метод «переустановки» адаптера, о котором я не знаю.

Любая помощь будет оценена.

MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_home);

    //For Recycler View
    recyclerView = findViewById(R.id.recycler_view);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    publicReport();

    everyone = findViewById(R.id.publicReport);
    mine = findViewById(R.id.myReport);

    everyone.setOnClickListener(view -> {
        publicReport();
    });

    mine.setOnClickListener(view ->{
        currentUserReport();
    });
}

private void publicReport(){
    Query query = reportRef.orderBy("date",Query.Direction.DESCENDING);
    FirestoreRecyclerOptions<Report> options  = new FirestoreRecyclerOptions.Builder<Report>()
            .setQuery(query,Report.class)
            .build();

    reportAdapter = new ReportAdapter(options);
    recyclerView.setAdapter(reportAdapter);
    reportAdapter.notifyDataSetChanged();
}


private void currentUserReport(){
    Query query = reportRef.whereEqualTo("reportedByUserID",user.getUid()).orderBy("date",Query.Direction.DESCENDING);
    FirestoreRecyclerOptions<Report> options  = new FirestoreRecyclerOptions.Builder<Report>()
            .setQuery(query,Report.class)
            .build();

    reportAdapter = new ReportAdapter(options);
    recyclerView.setAdapter(reportAdapter);
    reportAdapter.notifyDataSetChanged();
}

ReportAdapter

public class ReportAdapter extends FirestoreRecyclerAdapter<Report, ReportAdapter.ReportHolder> {

    public ReportAdapter(@NonNull FirestoreRecyclerOptions<Report> options) {
        super(options);

    }

    @Override
    protected void onBindViewHolder(@NonNull ReportHolder holder, int i, @NonNull Report report) {
        String seriousLvl = "";

        holder.txtTitle.setText(report.getReportType());
        holder.txtDescription.setText(report.getDescription());
        holder.txtDate.setText(report.getDate());
        holder.txtReportedBy.setText(report.getReportedBy());

        seriousLvl = report.getSeriousness();

        if (seriousLvl.equals("Low")) {
            holder.seriousness.setCardBackgroundColor(Color.parseColor("#77dd77"));
        } else if (seriousLvl.equals("Medium")) {
            holder.seriousness.setCardBackgroundColor(Color.parseColor("#fcfc49"));
        } else if (seriousLvl.equals("High")) {
            holder.seriousness.setCardBackgroundColor(Color.parseColor("#fd8383"));
        }
    }



    @NonNull
    @Override
    public ReportHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.report_item,parent,false);
        return new ReportHolder(v);
    }

    class ReportHolder extends RecyclerView.ViewHolder{

        TextView txtTitle, txtDescription, txtDate, txtReportedBy;
        CardView seriousness;

        public ReportHolder(@NonNull View itemView) {
            super(itemView);
            seriousness = itemView.findViewById(R.id.seriousness);
            txtTitle = itemView.findViewById(R.id.text_view_title);
            txtDescription = itemView.findViewById(R.id.text_view_description);
            txtDate = itemView.findViewById(R.id.text_view_date);
            txtReportedBy = itemView.findViewById(R.id.text_view_report_by);
        }
    }
}
...