@sanke46

Как реализовать ProgressBar с FireBase загрузкой?

Пробую понять куда вставлять setVisibility(), но он просто не работает что делать ?? Если есть более изящное и правильное решение готов полностью переписать код, но сделать это правильно

package com.sanke46.android.e_commerce.fireBase;

import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ProgressBar;

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 com.google.firebase.database.ValueEventListener;
import com.sanke46.android.e_commerce.adapter.RecyclerViewAdapter;
import com.sanke46.android.e_commerce.adapter.SalesRecyclerViewAdapter;
import com.sanke46.android.e_commerce.model.Item;

import java.util.ArrayList;

public class FirebaseHandler {

    private static final String TAG = FirebaseHandler.class.getSimpleName();
    private Item item;
    private FirebaseDatabase database = FirebaseDatabase.getInstance();
    private DatabaseReference myRef = database.getReference("product");

    public ArrayList<Item> getAllSalesItem(String titleProduct,
                                           final ArrayList<Item> arrayOfItemProduct,
                                           final SalesRecyclerViewAdapter adapter,
                                           final ProgressBar progressBar,
                                           final LinearLayout mContentLayout){
        arrayOfItemProduct.clear();
        myRef.child(titleProduct).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                progressBar.setVisibility(View.VISIBLE);
                mContentLayout.setVisibility(LinearLayout.GONE);

                for (final DataSnapshot snapshot : dataSnapshot.getChildren()) {
                    item = snapshot.getValue(Item.class);
                    if(item.isSales()) {
                        arrayOfItemProduct.add(item);
                    }
                }
                adapter.notifyDataSetChanged();

                progressBar.setVisibility(View.GONE);
                mContentLayout.setVisibility(LinearLayout.VISIBLE);
            }

            @Override
            public void onCancelled(DatabaseError error) {
                // Failed to read value
                Log.w(TAG, "Failed to read value.", error.toException());
            }
        });
        return arrayOfItemProduct;
    }

    public ArrayList<Item> getAllItem(String titleProduct, final ArrayList<Item> arrayOfItemProduct, final RecyclerViewAdapter adapter){
        arrayOfItemProduct.clear();
        myRef.child(titleProduct).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (final DataSnapshot snapshot : dataSnapshot.getChildren()) {
                    item = snapshot.getValue(Item.class);
                    if(!item.isSales()) {
                        arrayOfItemProduct.add(item);
                    }
                }
                adapter.notifyDataSetChanged();
            }

            @Override
            public void onCancelled(DatabaseError error) {
                // Failed to read value
                Log.w(TAG, "Failed to read value.", error.toException());
            }
        });

        return arrayOfItemProduct;

    }
}
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 50 000 до 100 000 ₽
FunCorp Москва
от 200 000 ₽
MFMS Москва
от 150 000 до 250 000 ₽
17 февр. 2020, в 00:30
1500 руб./за проект
16 февр. 2020, в 22:28
2000 руб./за проект
16 февр. 2020, в 22:03
1200 руб./в час