Firebase数据库监听器在工作结束时无法接收变量值

时间:2018-05-25 05:48:36

标签: android firebase firebase-realtime-database

我为我的数据库实现了Listener。正在调用监听器,但我的menuAdapter没有收到我的值。 我不知道为什么会这样。

 FirebaseDatabase database = FirebaseDatabase.getInstance();

    DatabaseReference myRef = database.getReference("Menu/思慕雪");

    myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {

            for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
                listStr.add(String.valueOf(dataSnapshot.getKey()));
                picUrl.add(dataSnapshot.child("pic").getValue().toString().trim());
                m_price.add(dataSnapshot.child("M").getValue().toString().trim());
                l_price.add(dataSnapshot.child("L").getValue().toString().trim());
            }

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }

    });
    menuAdapter menuAdapter = new menuAdapter(listStr,picUrl,m_price,l_price);
    recyclerView.setAdapter(menuAdapter);

这是我的menuAdapter代码。

public class menuAdapter扩展了RecyclerView.Adapter {

private List<String> mListString;
private List<String> mPicUrl;
private List<String> mMPrice;
private List<String> mLPrice;

public class ViewHolder extends RecyclerView.ViewHolder
        implements View.OnClickListener {
    ImageView mImgView;
    TextView mTxt;
    TextView m_MPrice;
    TextView m_LPrice;
    ViewHolder(View itemView) {
        super(itemView);
        mImgView = (ImageView) itemView.findViewById(R.id.drink_pic);
        mTxt = (TextView) itemView.findViewById(R.id.drink_name);
        m_MPrice = (TextView) itemView.findViewById(R.id.drink_m_price);
        m_LPrice = (TextView) itemView.findViewById(R.id.drink_l_price);

        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {

        Toast.makeText(view.getContext(),
                mListString.get(getAdapterPosition()), Toast.LENGTH_LONG)
                .show();
    }
}


public menuAdapter(List<String> listString,List<String> picUrl,List<String> m_price,List<String> l_price) {
    mListString = listString;
    mPicUrl=picUrl;
    mMPrice=m_price;
    mLPrice=l_price;
}

@Override
public menuAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View v = LayoutInflater.from(parent.getContext()).inflate(
            R.layout.menu_card, parent, false);


    ViewHolder viewHolder = new ViewHolder(v);
    return viewHolder;
}

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


    new downloadImageTask(holder.mImgView)
            .execute(mPicUrl.get(position));
    holder.mTxt.setText(mListString.get(position));
    if(!mMPrice.get(position).equals("0")){
        holder.m_MPrice.setText("M: $"+mMPrice.get(position));
    }else{
        holder.m_MPrice.setText("--");
    }

    if(!mLPrice.get(position).equals("0")){
        holder.m_LPrice.setText("L: $"+mLPrice.get(position));
    }else{
        holder.m_LPrice.setText("--");
    }


}


@Override
public int getItemCount() {
    return mListString.size();
}

}

0 个答案:

没有答案