Изменить фрагмент с контейнером пуст

Давайте посмотрим, может ли кто-то увидеть ошибку, я был здесь часами и не знаю, почему не отображается экран муниципалитетов, то есть он пустой. Идея состоит в том, чтобы нажать на провинцию и отобразить список муниципалитетов.

Фрагмент муниципалитетов

public class MunicipioFragment extends Fragment {

    // TODO: Customize parameter argument names
    private static final String ARG_COLUMN_COUNT = "column-count";
    // TODO: Customize parameters
    private int mColumnCount = 1;
    private IOnClickMunicipio mListener;
    String provincia;
    String searchText;
    RecyclerView recyclerView;

    /**
     * Mandatory empty constructor for the fragment manager to instantiate the
     * fragment (e.g. upon screen orientation changes).
     */
    public MunicipioFragment() {
    }



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_municipio_list, container, false);

        // Set the adapter
        if (view instanceof RecyclerView) {
            Context context = view.getContext();
             recyclerView = (RecyclerView) view;
            if (mColumnCount <= 1) {
                recyclerView.setLayoutManager(new LinearLayoutManager(context));
            } else {
                recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount));
            }

            //Para la provincia
            provincia = getArguments().getString(Constantes.ARG_PROVINCIA);

            //Para el buscador de municipios
            searchText = getArguments().getString(Constantes.ARG_TEXTO_BUSCAR);

            if (provincia != null) {
                mListener.stTitleItemProvincia(provincia);
                List<String> listaMunicipios = getArguments().getStringArrayList(Constantes.ARG_LOCALIDADES);

                List<Municipio> municipios = new ArrayList<>();

                for (String municipio : listaMunicipios) {
                    municipios.add(new Municipio(municipio));
                }

                recyclerView.setAdapter(new MyMunicipioRecyclerViewAdapter(municipios, mListener));
            }

            if (searchText != null) {
                new getMunicipiosTask().execute(searchText);
            }

        }
        return view;
    }


    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof IOnClickMunicipio) {
            mListener = (IOnClickMunicipio) context;
        } else {
            throw new RuntimeException(context.toString()
                    + " must implement IOnClickMunicipio");
        }
    }

    @Override
    public void onDetach() {
        super.onDetach();
        mListener = null;
    }


    private class getMunicipiosTask extends AsyncTask<String, Void, List<Municipio>> {

        ProgressDialog progressDialog;

        @Override
        protected void onPreExecute() {
            progressDialog = new ProgressDialog(getActivity());
            progressDialog.setIndeterminate(false);
            progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            progressDialog.setMessage("Buscando...");
            progressDialog.show();
        }

        @Override
        protected List<Municipio> doInBackground(String... params) {
            Serializer serializer = new Persister();
            String strQuery = params[0];

            try {
                //Buscando el código del municipio
                String urlEncoded = "http://www.salesianos-triana.com/dam/xml/municipios/?ciudad=" + URLEncoder.encode(strQuery, "utf-8");

                URL urlFinal = new URL(urlEncoded);

                InputStream inputStream = urlFinal.openStream();

                Municipios municipios = serializer.read(Municipios.class, inputStream, false);

                List<Municipio> listaMunicipios = municipios.getListaMunicipios();

                return listaMunicipios;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }

            return null;
        }

        protected void onPostExecute(List<Municipio> municipios) {
            progressDialog.dismiss();

            if (municipios == null) {
                Toast.makeText(getActivity(), "Sin coincidencias...", Toast.LENGTH_SHORT).show();
            } else {
                recyclerView.setAdapter(new MyMunicipioRecyclerViewAdapter(municipios, mListener));
            }
        }
    }

}

Адаптер муниципалитетов

public class MyMunicipioRecyclerViewAdapter extends RecyclerView.Adapter<MyMunicipioRecyclerViewAdapter.ViewHolder> {

    private final List<Municipio> mValues;
    private final IOnClickMunicipio mListener;

    public MyMunicipioRecyclerViewAdapter(List<Municipio> items, IOnClickMunicipio listener) {
        mValues = items;
        mListener = listener;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.fragment_municipio_item, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, int position) {
        holder.mItem = mValues.get(position);
        holder.textViewMunicipio.setText(holder.mItem.getNombre());

        holder.mView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (null != mListener) {
                    // Notify the active callbacks interface (the activity, if the
                    // fragment is attached to one) that an item has been selected.
                    mListener.onLocalidadClick(holder.mItem);
                }
            }
        });
    }

    @Override
    public int getItemCount() {
        return mValues.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        public final View mView;

        public final TextView textViewMunicipio;
        public Municipio mItem;

        public ViewHolder(View view) {
            super(view);
            mView = view;

            textViewMunicipio = (TextView) view.findViewById(R.id.textview_nombre_municipio);
        }

    }

}

MainActivity

 @Override
    public void onProvinciaClick(String provincia, ArrayList<String> municipios) {
        Fragment fragment = new MunicipioFragment();

        Bundle args = new Bundle();
        args.putString(Constantes.ARG_PROVINCIA, provincia);
        args.putStringArrayList(Constantes.ARG_LOCALIDADES, municipios);

        fragment.setArguments(args);

        getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).commit();
    }

XML Activity_main

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:descendantFocusability="beforeDescendants"
    android:focusableInTouchMode="true"
    tools:context="com.aemet.jose.clienteaemet.MainActivity">



    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"   />



</RelativeLayout>
0
задан 08.01.2017, 22:34
1 ответ

Правильный ответ на планирование сомнения estÃ: в аннотациях классов я моделирую. А именно, аргументы не давали ошибку и AsyncTask estÃ: правильны, único, которая не удавалась, были классы я моделирую, что какой-то не ten¦ - в постановку аннотации правильно. Я снова отмечаю, что я моделирую моим классам, они идут с Parceler. Нужно проверять их хорошо, чтобы не сходить с ума. Привет.

0
ответ дан 24.11.2019, 11:43

Теги

Похожие вопросы