Не получает ключ с Firebase

407
01 июня 2017, 07:40

Проблема в том, что для удаления данных с Firebase мне необходимо знать ключ для удаления. Я получаю snapshop, в режиме дебага вижу, что ключ приходит, но не записывается в список List, не могу понять почему.

Фрагмент кода добавления данных в список:

        mReference.child("basket").orderByChild("userId").equalTo(userRef).addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            mList.add(dataSnapshot.getValue(Basket.class));
            mAdapter.notifyDataSetChanged();
            getSumDishes();
        }

Модель для данного списка:

public class Basket {
    public Basket(){
    }
    public String key;
    public String userId;
    public String dishId;
    public String price;
    public String restaurantId;
    public String weight;
    public String title;
    public String composition;
    public Basket(String key, String userId, String dishId, String price, String restaurantId, String weight, String title, String composition) {
        this.key = key;
        this.userId = userId;
        this.dishId = dishId;
        this.price = price;
        this.restaurantId = restaurantId;
        this.weight = weight;
        this.title = title;
        this.composition = composition;
    }
}

Весь код BasketFragment.java:

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.food_good.lilsem.food_good.model.Basket;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.util.ArrayList;
import java.util.List;

public class BasketFragment extends Fragment implements BasketAdapter.OnRecyclerViewItemClickListener {

    private FirebaseDatabase mFirebaseDatabase;
    private DatabaseReference mReference;
    private FirebaseAuth mAuth;
    private RecyclerView mRecyclerView;
    TextView tvSumDishes;
    private List<Basket> mList;
    private List<String> list;
    private BasketAdapter mAdapter;
    String userRef;
    public BasketFragment() {
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        final View view = inflater.inflate(R.layout.basket_list, container, false);
        mAuth = FirebaseAuth.getInstance();
        // получаем ссылку на пользователя
        FirebaseUser user = mAuth.getCurrentUser();
        Context context = getActivity();
        mList = new ArrayList<>();
        list = new ArrayList<>();
        mRecyclerView = (RecyclerView) view.findViewById(R.id.basket_list);
        tvSumDishes = (TextView) view.findViewById(R.id.tv_sum_dishes);
        mRecyclerView.setHasFixedSize(true);
        LinearLayoutManager layoutManager = new LinearLayoutManager(context);
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        mRecyclerView.setLayoutManager(layoutManager);
        mAdapter = new BasketAdapter(mList, this);
        mRecyclerView.setAdapter(mAdapter);
        mFirebaseDatabase = FirebaseDatabase.getInstance();
        mReference = mFirebaseDatabase.getReference();
        userRef = user.getUid();
        updateList();
        return view;
    }
    private void updateList() {
        mReference.child("basket").orderByChild("userId").equalTo(userRef).addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                mList.add(dataSnapshot.getValue(Basket.class));
                list.add(dataSnapshot.getKey());
                mAdapter.notifyDataSetChanged();
                getSumDishes();
            }
            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {
                Basket model = dataSnapshot.getValue(Basket.class);
                int index = getItemIndex(model);
                mList.set(index, model);
                mAdapter.notifyItemChanged(index);
                getSumDishes();
            }
            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {
                Basket model = dataSnapshot.getValue(Basket.class);
                int index = getItemIndex(model);
                mList.remove(index);
                mAdapter.notifyItemRemoved(index);
                getSumDishes();
            }
            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });
    }

    private int getItemIndex(Basket basket) {
        int index = 0;
        for (int i = 0; i < mList.size(); i++) {
            if (mList.get(i).key != null && mList.get(i).key.equals(basket.key)) {
                index = i;
                break;
            }
        }
        return index;
    }
    private void getSumDishes() {
        int sum = 0;
        for (int i = 0; i < mList.size(); i++) {
            if (mList.get(i).price != null) {
                sum += Integer.parseInt(mList.get(i).price);
            }
        }
        tvSumDishes.setText("Сумма заказа: " + sum);
    }
    @Override
    public void onClick(int position) {
        removeOrder(position);
    }
    private void removeOrder(int position) {
        mReference.child("basket").child(list.get(position)).removeValue();
    }
}

READ ALSO
Как проверить, имеется ли подстрока в строке

Как проверить, имеется ли подстрока в строке

Я не смог четко сформулировать вопросНо тем не менее вот:

321
Какой View передаётся параметром в onClick?

Какой View передаётся параметром в onClick?

Есть у нас кнопкаМы задаём ей onClick (назовём его так же — onClick)

249
req.getparameter возращает null при работе с файлами

req.getparameter возращает null при работе с файлами

Итак есть у меня jsp в которой есть формаВ форму человек вводит данные и они отправляются на обработку сервлету

287