Как получить ключ от Firebase с помощью RecyclerView - PullRequest
0 голосов
/ 28 апреля 2019

Я могу получить ключ и показать в 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 - класс модели для моего переработчика. Вид:

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: Ребенок: LEAD 1
  • Ребенок: LEAD 2
  • Ребенок: LEAD 3
  • Ребенок: LEAD 4
  • Ребенок: LEAD 5
  • Ребенок: LEAD 6

но в App это не работает. введите описание изображения здесь

1 Ответ

1 голос
/ 28 апреля 2019
@Override
public int getItemCount() {
    //return 0;
      replace it with history.size();
}

добавленные строки сообщают адаптеру, сколько элементов адаптер должен связать с представлением переработчика.По умолчанию это 0, что означает, что класс адаптера никогда не вызовет метод binView для отображения элементов на стороне просмотра

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...