Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用RecyclerView从firebase获取密钥_Java_Android_Firebase Realtime Database - Fatal编程技术网

Java 如何使用RecyclerView从firebase获取密钥

Java 如何使用RecyclerView从firebase获取密钥,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,我可以获取密钥并显示在Log.d中,但它不会显示在RecyclerView中。怎么了 HistoryActivity.java它包含我的recyclerView: public class HistoryActivity extends AppCompatActivity { FirebaseFirestore mFirestore; FirebaseAuth firebaseAuth; FirebaseDatabase database; RecyclerV

我可以获取密钥并显示在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;

        }
    }
}
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;
    }
}
PreviousLst.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;

        }
    }
}
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/内容值:儿童为:心率 D/ContentValues:子项为:导联1 儿童:铅2 儿童:铅3 儿童:铅4 儿童:铅5 儿童:铅6 但它并不是应用程序中的鞋。


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

-感谢下次我会的-我认为这很简单,不言自明。
@Override
public int getItemCount() {
    //return 0;
      replace it with history.size();
}