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