Слушатель базы данных Firebase не может получить значения переменной по окончании работы - PullRequest
0 голосов
/ 25 мая 2018

Я реализовал 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);

Это мои коды меню адаптера.

меню открытого класса. Адаптер расширяет 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();
}

}

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