Индикатор выполнения невидим с Query Back4app - PullRequest
0 голосов
/ 29 октября 2019

У меня большие проблемы с этим. Я наполовину делаю свою базу данных в Back4app, и первый загружаемый GridView - это элементы с сервера, однако для их загрузки требуется некоторое время. Так что я исследовал Progress Bar и обрабатывал свой относительный макет с помощью visibility.i я думал, что метод done вызывается всякий раз, когда онзакончил загрузку. так вот мой код пожалуйста помогите ..

import android.content.Intent;
import android.os.Bundle;

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;

import com.example.mac.mycarapp.Adapter.InmobiliariaAdapter;
import com.example.mac.mycarapp.Adapter.RecyclerTouchListener;
import com.example.mac.mycarapp.R;
import com.parse.FindCallback;
import com.parse.GetCallback;
import com.parse.ParseException;
import com.parse.ParseFile;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import com.parse.ParseUser;

import java.util.ArrayList;
import java.util.List;

public class PropiedadesInmobiliariasFragment extends Fragment {

private LinearLayoutManager layoutManager;
RecyclerView recyclerInmobiliarias;
ParseObject queryEmpresa;
ParseObject empresa;
String stringEmpresa;
List<ParseObject> allItems;
FragmentManager fm;
ProgressBar pb;


public PropiedadesInmobiliariasFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_propiedades_inmobiliarias, container, false);
    pb=view.findViewById(R.id.progress_bar_inmo);

    recyclerInmobiliarias=(RecyclerView)view.findViewById(R.id.recycler_inmobiliarias);
    pb.setVisibility(View.VISIBLE);
    recyclerInmobiliarias.setVisibility(View.GONE);

    allItems=new ArrayList<>();

    queryEmpresa();
    layoutManager=new GridLayoutManager(getContext(),2);
    recyclerInmobiliarias.setHasFixedSize(true);
    recyclerInmobiliarias.setLayoutManager(layoutManager);

    recyclerInmobiliarias.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), recyclerInmobiliarias, new RecyclerTouchListener.ClickListener() {
        @Override
        public void onClick(View view, int position) {

            ParseObject item=allItems.get(position);

            String selectedObjectId= item.getObjectId();
            String nombrePro=item.getString("NombrePropiedad");
            ParseFile object1 = item.getParseFile("imagenPrincipal");
            ParseFile imagen1 = item.getParseFile("imagen1");
            ParseFile imagen2 = item.getParseFile("imagen2");
            ParseFile imagen3 = item.getParseFile("imagen3");
            ParseFile imagen4 = item.getParseFile("imagen4");
            ParseFile imagen5 = item.getParseFile("imagen5");
            ParseFile imagen6 = item.getParseFile("imagen6");
            ParseFile imagen7 = item.getParseFile("imagen7");
            ParseFile imagen8 = item.getParseFile("imagen8");

            String precio=item.getString("Precio");
            String numHabita=item.getString("numeroDeHabitaciones");
            String metrosCuadrados=item.getString("metrosCuadrados");
            String numeroBanos=item.getString("numeroBanos");
            String descrip=item.getString("descripcionAdicionalPropiedad");
            String admin=item.getString("valorAdministracion");
            String numPar=item.getString("Parqueaderos");

            Bundle bundle=new Bundle();
            bundle.putString("objectId",selectedObjectId);
            bundle.putString("Nombre",nombrePro);
            bundle.putString("primeraFoto", object1.getUrl());
            bundle.putString("precio",precio);
            bundle.putString("numHab",numHabita);
            bundle.putString("metrosCua",metrosCuadrados);
            bundle.putString("numBanos",numeroBanos);
            bundle.putString("des",descrip);
            bundle.putString("admin",admin);
            bundle.putString("parq",numPar);
//
//                fm=getFragmentManager();
//                Fragment detalleInmobiliaria=new DetalleInmobiliaria();
//                detalleInmobiliaria.setArguments(bundle);
//
//                fm.beginTransaction().replace(R.id.framelayout,detalleInmobiliaria).commit();
                Intent intent = new Intent(getActivity(), DetalleInmobiliaria.class);
                intent.putExtra("objectId", selectedObjectId);
                intent.putExtra("Nombre", nombrePro);
                intent.putExtra("primeraFoto", object1.getUrl());
                intent.putExtra("precio", precio);
                intent.putExtra("numHab", numHabita);
                intent.putExtra("metrosCua", metrosCuadrados);
                intent.putExtra("numBanos", numeroBanos);
                intent.putExtra("des", descrip);
                intent.putExtra("admin", admin);
                intent.putExtra("parq", numPar);
                startActivity(intent);
            }
            @Override
            public void onLongClick(View view, int position) {
        }
    }));

    return view;


}

private void queryEmpresa(){
    /**Ojo no es que no este sirviendo el metodo sino que el tipo de empresa asignado al usuario
     * no concuerda para que llene el recycler*/
    ParseQuery<ParseUser> query = ParseUser.getQuery();
    query.whereEqualTo("objectId",ParseUser.getCurrentUser().getObjectId());
    query.include("Empresa");
    query.getInBackground(ParseUser.getCurrentUser().getObjectId(), new GetCallback<ParseUser>() {
        public void done(ParseUser object, ParseException e) {
            if (e == null) {
                // object will be your user and you should be able to retrieve Empresa like this
                empresa = object.getParseObject("Empresa");
                stringEmpresa=empresa.getObjectId();
                queryPropInmo();
            } else {
                // something went wrong. It would be good to log.
            }
        }
    });

}

private void queryPropInmo(){
    ParseQuery<ParseObject> query1 = ParseQuery.getQuery("PropiedadesInmobiliarias");
    queryEmpresa=ParseObject.createWithoutData("Empresa",stringEmpresa);
    query1.whereEqualTo("Empresa",queryEmpresa);
    query1.include("Empresa");
    query1.include("Imagenes");

   query1.findInBackground(new FindCallback<ParseObject>() {
       @Override
       public void done(List<ParseObject> objects, ParseException e) {
           pb.setVisibility(View.GONE);
           recyclerInmobiliarias.setVisibility(View.VISIBLE);

           if(objects!=null) {

               for (ParseObject obj : objects
               ) {
                   allItems.add(obj);

               }
           }
           InmobiliariaAdapter adapter = new InmobiliariaAdapter(getActivity(),allItems);
           recyclerInmobiliarias.setAdapter(adapter);
           adapter.notifyDataSetChanged();
       }
   });
}

}

...