如何使用RecyclerView从firebase获取密钥

问题描述 投票:0回答:1

我可以在Log.d中获取密钥并显示,但它不会显示在RecyclerView中。它出什么问题了?

HistoryActivity.java它包含我的recyclerView:

public class HistoryActivity extends AppCompatActivity {

    FirebaseFirestore mFirestore;
    FirebaseAuth firebaseAuth;
    FirebaseDatabase database;

    RecyclerView mHisList;
    ArrayList<PreviousLst> history;
    adt_rv_HisList adtRvHisList;

    TextView ptName;
    TextView ptPort;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_history);

        getSupportActionBar().setSubtitle("History");

        Intent it = getIntent();
        String patName = it.getStringExtra("nm");
        String patID = it.getStringExtra("idpat");
        String portNum = it.getStringExtra("pNum");
        String regisDate = it.getStringExtra("rdate");

        ptName = findViewById(R.id.txName);
        ptPort = findViewById(R.id.portpassValue);

        ptName.setText(patName);
        ptPort.setText(portNum);

        history = new ArrayList<>();

        setupRecyclerView();
        setupFireBase();
        loadDataFromDatabase(portNum);

    }

    private void setupFireBase() {

        mFirestore = FirebaseFirestore.getInstance();
        firebaseAuth = FirebaseAuth.getInstance();
        database = FirebaseDatabase.getInstance();

    }

    private void setupRecyclerView() {
        mHisList = findViewById(R.id.rv_prev_lst);
        mHisList.setHasFixedSize(true);
        mHisList.setLayoutManager(new LinearLayoutManager(this));
        mHisList.setAdapter(adtRvHisList);
    }

    public void loadDataFromDatabase(String portNum) {
        if(history.size()>0)
            history.clear();

        DatabaseReference myRef;
        DatabaseReference passref;

        switch (portNum){

            case "Huang-Yai0002":
                String p2 = "NETEKG-Huang-Yai0002";
                myRef = database.getReference("MACHINE");
                passref = myRef.child(p2).child("value");

                passref.addValueEventListener(new ValueEventListener(){
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {

                        for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {

                            String keydate = postSnapshot.getKey();
                            Log.d(TAG, "Child are: " + keydate );
                            PreviousLst previousLst = new PreviousLst(keydate);
                            history.add(previousLst);
                        }
                        adtRvHisList = new adt_rv_HisList(HistoryActivity.this, history);
                        mHisList.setAdapter(adtRvHisList);
                    }
                    @Override
                    public void onCancelled(DatabaseError error) {
                        Log.w(TAG, "Failed to read value.", error.toException());
                    }
                });
                break;

            case "Huang-Yai0003":
                String p3 = "NETEKG-Huang-Yai0003";
                myRef = database.getReference("MACHINE");
                passref = myRef.child(p3).child("value");

                passref.addValueEventListener(new ValueEventListener(){
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {

                        for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
                            String keydate = postSnapshot.getKey();
                            Log.d(TAG, "Child are: " + keydate );
                            PreviousLst previousLst = new PreviousLst(postSnapshot.getKey());
                            history.add(previousLst);
                        }
                        adtRvHisList = new adt_rv_HisList(HistoryActivity.this, history);
                        mHisList.setAdapter(adtRvHisList);
                    }
                    @Override
                    public void onCancelled(DatabaseError error) {

                        Log.w(TAG, "Failed to read value.", error.toException());
                    }
                });
                break;
            default:
                Log.d(TAG, "Value is: " + portNum);
                Toast.makeText(getApplicationContext(),"Error...",Toast.LENGTH_LONG).show();
                break;

        }
    }
}

adt_rv_HisList.java适配器:

public class adt_rv_HisList extends RecyclerView.Adapter<adtrvHisListViewHolder> {
    HistoryActivity historyActivity;
    ArrayList<PreviousLst> history;


    public adt_rv_HisList(HistoryActivity historyActivity, ArrayList<PreviousLst> history) {
        this.history = history;
        this.historyActivity = historyActivity;
    }

    @NonNull
    @Override
    public adtrvHisListViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(historyActivity.getBaseContext()).inflate(R.layout.hislist_item, viewGroup, false);
        return new adtrvHisListViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull adtrvHisListViewHolder holder, int position) {

        holder.hdate.setText(history.get(position).getHisDate());

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialogView();
            }
        });
    }

    private void dialogView() {
        final Dialog dia = new Dialog(historyActivity);
        dia.setContentView(R.layout.dialog_ask_view);
        dia.show();

        Button pvgraph = (Button)dia.findViewById(R.id.bt_pvgraph);
        Button pvhr = (Button)dia.findViewById(R.id.bt_pvhrate);
        Button cc = (Button)dia.findViewById(R.id.btn_cancel);

        cc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dia.dismiss();
            }
        });

        pvgraph.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dia.dismiss();
                Intent it = new Intent(historyActivity, ViewgraphActivity.class);
                historyActivity.startActivity(it);
            }
        });

        pvhr.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dia.dismiss();
                Intent it = new Intent(historyActivity, ViewHRActivity.class);
                historyActivity.startActivity(it);
            }
        });
    }

    @Override
    public int getItemCount() {
        return 0;
    }
}

adtrvHisListViewHolder.java包含ViewHolder:


public class adtrvHisListViewHolder extends RecyclerView.ViewHolder {

    public TextView hdate;

    public adtrvHisListViewHolder(View itemView) {
        super(itemView);

        hdate = itemView.findViewById(R.id.his_date);
    }
}

PreviousLst.java是我的recyclerView的Model类:

public class PreviousLst {
    String HisDate;

    public PreviousLst(String HisDate){
        this.HisDate = HisDate;
    }

    public PreviousLst(){

    }

    public String getHisDate() {
        return HisDate;
    }
    public void setHisDate(String hisDate) {
        HisDate = hisDate;
    }
}

这是我在Log.d中获取并显示的关键

  • D / ContentValues:孩子是:心率
  • D / ContentValues:Child是:LEAD 1
  • 孩子是:领先2
  • 孩子是:领先3
  • 孩子是:领先4
  • 孩子是:领先5
  • 孩子是:领先6

但它没有在App中显示。 qazxsw poi

java android firebase-realtime-database
1个回答
1
投票
enter image description here

添加的行告诉适配器有多少项,适配器必须将项绑定到回收器视图。默认情况下它为0,表示适配器类永远不会调用binView方法来显示视图侧的项目

© www.soinside.com 2019 - 2024. All rights reserved.