首页 > 解决方案 > 如何使用当前用户的数据填充 recyclerview?

问题描述

我正在尝试从此参考访问数据:用户> uid>事务> trans

数据是孩子:trans,见截图:here

我做了以下事情: TransactionsHistory .java

public class TransactionsHistory extends AppCompatActivity {
    private RecyclerView recyclerView;
    private DatabaseReference mDatabase,refTransactions;
    private FirebaseAuth mAuth;
    private FirebaseAuth.AuthStateListener mAuthListener;

    TextView amount, date, address, type;

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

        getSupportActionBar().hide();

        //initialize recyclerview and FIrebase objects
//        recyclerView = (RecyclerView) findViewById(R.id.recyclerviewt);
//        recyclerView.setLayoutManager(new LinearLayoutManager(this));
//        recyclerView.setHasFixedSize(true);
//
//        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
//        linearLayoutManager.setReverseLayout(true);
//        linearLayoutManager.setStackFromEnd(true);
//        recyclerView.setLayoutManager(linearLayoutManager);

        mDatabase = FirebaseDatabase.getInstance().getReference().child("Users");
        if (FirebaseAuth.getInstance().getCurrentUser() != null) {
            String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
            refTransactions = mDatabase.child(uid).child("transactions");
        }else {
            Intent loginIntent = new Intent(TransactionsHistory.this, Login.class);
            loginIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(loginIntent);
        }
    }


    /////////////////////////////////////////////////////////////////////////////////////////////
    @Override
    protected void onStart() {
        super.onStart();
        Toast.makeText(this, "Loading...",Toast.LENGTH_SHORT).show();
        mAuth.addAuthStateListener(mAuthListener);
        FirebaseRecyclerAdapter<TransClass, TransactionsHistory.BlogzoneViewHolder> FBRA = new FirebaseRecyclerAdapter<TransClass, TransactionsHistory.BlogzoneViewHolder>(
                TransClass.class,
                R.layout.transactions_items,
                TransactionsHistory.BlogzoneViewHolder.class,
                refTransactions
        ) {
            @Override
            protected void populateViewHolder(TransactionsHistory.BlogzoneViewHolder viewHolder, TransClass model, int position) {
                final String post_key = getRef(position).getKey().toString();
                viewHolder.setTrans(model.getTrans());

                viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Toast.makeText(TransactionsHistory.this, "...",Toast.LENGTH_SHORT).show();
                    }
                });
            }
        };
        recyclerView.setAdapter(FBRA);
    }

    public static class BlogzoneViewHolder extends RecyclerView.ViewHolder {
        View mView;

        public BlogzoneViewHolder(View itemView) {
            super(itemView);
            mView = itemView;
        }

        public void setTrans(String trans) {
            TextView amount = mView.findViewById(R.id.amount_tr);
            TextView date = mView.findViewById(R.id.address_tr);
            TextView address = mView.findViewById(R.id.date_tr);
            TextView type = mView.findViewById(R.id.tr_type);

            amount.setText(trans);
        }
    }
    ///////////////////////////////////////////////////////////////////////////////////
}

TransClass.java

public class TransClass {

    private String trans;

    public TransClass(String trans ) {
        this.trans = trans;
    }

    public TransClass() {
    }

    public void setTrans(String trans) {
        this.trans = trans;
    }

    //Strings

    public String getTrans() {return trans;}
}

当我打开此活动时,我的应用程序崩溃了。我的编码什么时候出错了?我的孩子也参考正确吗?

标签: javaandroid

解决方案


推荐阅读