Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 07/05/17, 11:39:34
Avatar de Merche300
Merche300 Merche300 no está en línea
Betatester oficial
Mensajes: 625
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Versión de ROM: Cata
Versión de Radio: Radio Macuto
Tu operador: Pepephone
Mencionado: 0 comentarios
Tagged: 0 hilos
buscar en recyclerView

Estoy intentando buscar items desde el menu_main, con el boton de la lupa que me abre para introducir texto y este texto deberia ir borrando los items que no contienen esos caracteres, y esto es lo que hago sin obtener resultados.
En el FragGridCamos me marca el error Error173, 32) error: cannot find symbol method animateTo(List<Estadisticas>)
y en rojo me aparec animatedTo en la linea adapter.animateTo(listJornadas);¿Me pueden ayudar?

Código:
public class FragGridCampos extends Fragment implements SearchView.OnQueryTextListener{

    //Creating a List of jornadas
private List<Estadisticas> listJornadas;

    //Creating Views
private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private RecyclerView.Adapter adapter;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        final View view = inflater.inflate( R.layout.campos_list, null);

        recyclerView = (RecyclerView) view.findViewById( R.id.recyclerView);
        recyclerView.setHasFixedSize(true);
        RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getActivity(), 1);
        recyclerView.setLayoutManager(layoutManager);

        TextView miTexto = (TextView)view.findViewById( R.id.mi_texto);
        miTexto.setText("");
        //miTexto.setTextColor(color.RED);

listJornadas = new ArrayList<>();

        getData();

        recyclerView.setAdapter(adapter);
        recyclerView.addItemDecoration(new DecoracionLineaDivisoria(getActivity()));

        ImageButton fabButton = (ImageButton) view.findViewById(R.id.fab);
        fabButton.setOnClickListener(new View.OnClickListener() {
            @override
public void onClick(View v) {
                Toast.makeText(getActivity(),"Proximamente",Toast.LENGTH_SHORT).show();

                //final Snackbar snackBar = Snackbar.make(view.findViewById(R.id.fab), "A ver si consigo buscar", Snackbar.LENGTH_LONG);

                //snackBar.setAction("Buscar", new View.OnClickListener() {

                / @override
                //public void onClick(View v) {
                //Toast.makeText(getActivity(),"Provando si funciona tambien",Toast.LENGTH_SHORT).show();
                //snackBar.dismiss();
}
        });

        //snackBar.setActionTextColor(Color.CYAN);
        //View sbView = snackBar.getView();
        //TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
        //textView.setTextColor(Color.YELLOW);
        //snackBar.show();

        //}
        //});

return view;
    }

    //This method will get data from the web api
private void getData(){
        //Showing a progress dialog
final ProgressDialog loading = ProgressDialog.show(getActivity(),"Cargando datos", "Por favor espere...",false,false);

        //Creating a json array request
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(ConfigAmaters.CAMPOS,
                new Response.Listener<JSONArray>() {
                    @override
public void onResponse(JSONArray response) {
                        //Dismissing progress dialog
loading.dismiss();

                        //calling method to parse json array
parseData(response);
                    }
                },
                new Response.ErrorListener() {
                    @override
public void onErrorResponse(VolleyError error) {

                    }
                });

        //Creating request queue
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());

        //Adding request to the queue
requestQueue.add(jsonArrayRequest);
    }

    //This method will parse json data
private void parseData(JSONArray array){

        for(int i = 0; i<array.length(); i++) {
            Estadisticas campo = new Estadisticas();
            JSONObject json = null;
            try {
                json = array.getJSONObject(i);

                campo.setNombre_campo(json.getString("nombre_campo"));
                campo.setPoblacion(json.getString("poblacion"));
                campo.setEquipo(json.getString("equipo"));
                campo.setTelefono(json.getString("telefono"));
                campo.setGeo(json.getString("geo"));
                campo.setUrl(json.getString("url"));
                campo.setEmail(json.getString("email"));

                campo.setEscudo(json.getString("escudo"));

            } catch (JSONException e) {
                e.printStackTrace();
            }
            listJornadas.add(campo);
        }

        //Finally initializing our adapter
adapter = new Campos_Adapter(listJornadas, getActivity());

        //Adding adapter to recyclerview
recyclerView.setAdapter(adapter);
    }

    @override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu_main, menu);

        final MenuItem item = menu.findItem(R.id.action_search);
        final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
        searchView.setOnQueryTextListener(this);

        MenuItemCompat.setOnActionExpandListener(item,
                new MenuItemCompat.OnActionExpandListener() {
                    @override
public boolean onMenuItemActionCollapse(MenuItem item) {
                        // Do something when collapsed
adapter.animateTo(listJornadas);
                        return true; // Return true to collapse action view
}

                    @override
public boolean onMenuItemActionExpand(MenuItem item) {
                        // Do something when expanded
return true; // Return true to expand action view
}
                });
    }

    @override
public boolean onQueryTextChange(String newText) {
        // adapter.setFilter(mCountryModel, newText);
final List<Estadisticas> filteredModelList = filter(listJornadas, newText);
        //adapter.animateTo(filteredModelList);
recyclerView.scrollToPosition(0);

        return true;
    }

    @override
public boolean onQueryTextSubmit(String query) {
        return false;
    }

    private List<Estadisticas> filter(List<Estadisticas> models, String query) {
        query = query.toLowerCase();

        final List<Estadisticas> filteredModelList = new ArrayList<>();
        for (Estadisticas model : models) {
            final String text = model.getPoblacion().toLowerCase();
            if (text.contains(query)) {
                filteredModelList.add(model);
            }
        }
        return filteredModelList;
    }
}
xxxxx

Código:
public class Campos_Adapter extends RecyclerView.Adapter<Campos_Adapter.ViewHolder> {

    private ImageLoader imageLoader;
    private Context context;

    List<Estadisticas> estadisticas;

    public Campos_Adapter(List<Estadisticas> estadisticas, Context context) {
        super();
        this.estadisticas = estadisticas;
        this.context = context;
    }

    @override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from( parent.getContext() ).inflate( R.layout.campos_row, parent, false );
        ViewHolder viewHolder = new ViewHolder( v );
        return viewHolder;
    }

    public void onBindViewHolder(ViewHolder holder, final int position) {

        final Estadisticas model = estadisticas.get(position);
        ViewHolder.bind(model);

        holder.root.setOnClickListener( new View.OnClickListener() {
            @override
public void onClick(View view) {

                //Toast.makeText(context, "this is my Toast message!!! =)",
                //Toast.LENGTH_LONG).show();

                //Toast.makeText(context, estadisticas.get(position).getNombrePlato(), Toast.LENGTH_SHORT).show();

Intent intent= new Intent(context, DetailCampos.class);

                intent.putExtra("Poblacion", estadisticas.get(position).getPoblacion());
                intent.putExtra("Nombre_campo", estadisticas.get(position).getNombre_campo());
                intent.putExtra("Nombre", estadisticas.get(position).getEquipo());
                intent.putExtra("Telefono", estadisticas.get(position).getTelefono());
                intent.putExtra("Geo", estadisticas.get(position).getGeo());
                intent.putExtra("Email", estadisticas.get(position).getEmail());
                intent.putExtra("Url", estadisticas.get(position).getUrl());
                intent.putExtra("Imagen", estadisticas.get(position).getEscudo());

                context.startActivity(intent);


                Estadisticas estadisticas1 = estadisticas.get(getAdapterPosition());
            }

            private int getAdapterPosition() {
                return 0;
            }
        } );
        Estadisticas campos = estadisticas.get( position );
        imageLoader = DecoracionLineaDivisoria.CustomVolleyRequest.getInstance( context ).getImageLoader();
        imageLoader.get( campos.getEscudo(), ImageLoader.getImageListener( holder.escudo_local, R.mipmap.ic_launcher, android.R.drawable.ic_dialog_alert ) );

        holder.textViewEquipo_Local.setText( campos.getEquipo() );
        holder.textViewPoblacion.setText( campos.getPoblacion() );

        //holder.escudo_local.setImageUrl( campos.getImagenPlato(), imageLoader );
}

    @override
public int getItemCount() {
        return estadisticas.size();
    }

    public void animateTo(List<Estadisticas> models) {
        applyAndAnimateRemovals(models);
        applyAndAnimateAdditions(models);
        applyAndAnimateMovedItems(models);

    }

    private void applyAndAnimateRemovals(List<Estadisticas> newModels) {


        for (int i = estadisticas.size() - 1; i >= 0; i--) {
            final Estadisticas model = estadisticas.get(i);
            if (!newModels.contains(model)) {
                removeItem(i);
            }
        }
    }

    private void applyAndAnimateAdditions(List<Estadisticas> newModels) {

        for (int i = 0, count = newModels.size(); i < count; i++) {
            final Estadisticas model = newModels.get(i);
            if (!estadisticas.contains(model)) {
                addItem(i, model);
            }
        }
    }

    private void applyAndAnimateMovedItems(List<Estadisticas> newModels) {
        for (int toPosition = newModels.size() - 1; toPosition >= 0; toPosition--) {
            final Estadisticas model = newModels.get(toPosition);
            final int fromPosition = estadisticas.indexOf(model);
            if (fromPosition >= 0 && fromPosition != toPosition) {
                moveItem(fromPosition, toPosition);
            }
        }
    }

    public Estadisticas removeItem(int position) {
        final Estadisticas model = estadisticas.remove(position);
        notifyItemRemoved(position);
        return model;
    }

    public void addItem(int position, Estadisticas model) {
        estadisticas.add(position, model);
        notifyItemInserted(position);
    }

    public void moveItem(int fromPosition, int toPosition) {
        final Estadisticas model = estadisticas.remove(fromPosition);
        estadisticas.add(toPosition, model);
        notifyItemMoved(fromPosition, toPosition);
    }

    static class ViewHolder extends RecyclerView.ViewHolder {
        public ImageView escudo_local;
        private static TextView textViewEquipo_Local;
        private static TextView textViewPoblacion;
        public View root;

        public ViewHolder(View itemView) {
            super( itemView );
            root = itemView;
            escudo_local = (ImageView) itemView.findViewById( R.id.tv_esc_local );
            textViewEquipo_Local = (TextView) itemView.findViewById( R.id.tv_ek_local );
            textViewPoblacion = (TextView) itemView.findViewById( R.id.tv_poblacion );
        }
        public static void bind(Estadisticas estadisticas) {
            textViewEquipo_Local.setText(estadisticas.getEquipo());
            textViewPoblacion.setText(estadisticas.getPoblacion());

        }
    }

}
y el menu

Código:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".ActividadPrincipal">
    <item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />

    <item
android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search"
android:title="@string/action_search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always|collapseActionView" />


</menu>

Última edición por Merche300 Día 23/06/17 a las 08:36:45
Responder Con Cita


  #2  
Viejo 23/06/17, 08:36:23
Avatar de Merche300
Merche300 Merche300 no está en línea
Betatester oficial
Mensajes: 625
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Versión de ROM: Cata
Versión de Radio: Radio Macuto
Tu operador: Pepephone
Mencionado: 0 comentarios
Tagged: 0 hilos
La solucion

Código:
public class FragGridCampos extends Fragment implements SearchView.OnQueryTextListener{

    //Creating a List of jornadas
private List<Estadisticas> listJornadas;

    //Creating Views
private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private Campos_Adapter adapter;


    private List<Estadisticas> mCountryModel;


    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        final View view = inflater.inflate( R.layout.campos_list, null);

        setHasOptionsMenu(true);

        recyclerView = (RecyclerView) view.findViewById( R.id.recyclerView);
        recyclerView.setHasFixedSize(true);
        RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getActivity(), 1);
        recyclerView.setLayoutManager(layoutManager);

        TextView miTexto = (TextView)view.findViewById( R.id.mi_texto);
        miTexto.setText("CAMPOS");
        //miTexto.setTextColor(color.RED);
listJornadas = new ArrayList<Estadisticas>();

        adapter = new Campos_Adapter(listJornadas, getActivity());
        recyclerView.setAdapter(adapter);
        recyclerView.addItemDecoration(new DecoracionLineaDivisoria(getActivity()));

        getData();

        /*ImageButton fabButton = (ImageButton) view.findViewById(R.id.fab);
        fabButton.setOnClickListener(new View.OnClickListener() {
            @override
            public void onClick(View v) {
                //startActivity(new Intent(getActivity(), MainActivity2.class));
                Toast.makeText(getActivity(),"Proximamente",Toast.LENGTH_SHORT).show();
            }
        });*/
return view;
    }

    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu_buscar, menu);
        super.onDestroyView();
        final MenuItem searchItem = menu.findItem(R.id.action_search);
        final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
        searchView.setOnQueryTextListener(this);


    }

    //This method will get data from the web api
private void getData(){
        //Showing a progress dialog
final ProgressDialog loading = ProgressDialog.show(getActivity(),"Cargando datos", "Por favor espere...",false,false);

        //Creating a json array request
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Config_Url.CAMPOS,
                new Response.Listener<JSONArray>() {
                    [COLOR=#808000 @override
[/color]public void onResponse(JSONArray response) {
                        //Dismissing progress dialog
loading.dismiss();

                        //calling method to parse json array
parseData(response);
                    }
                },
                new Response.ErrorListener() {
                    [COLOR=#808000 @override
[/color]public void onErrorResponse(VolleyError error) {

                    }
                });

        //Creating request queue
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());

        //Adding request to the queue
requestQueue.add(jsonArrayRequest);
    }

    //This method will parse json data
private void parseData(JSONArray array){

        for(int i = 0; i<array.length(); i++) {
            Estadisticas campo = new Estadisticas();
            JSONObject json = null;
            try {
                json = array.getJSONObject(i);

                campo.setNombre_campo(json.getString("nombre_campo"));
                campo.setPoblacion(json.getString("poblacion"));
                campo.setEquipo(json.getString("equipo"));
                campo.setTelefono(json.getString("telefono"));
                campo.setGeo(json.getString("geo"));
                campo.setUrl(json.getString("url"));
                campo.setEmail(json.getString("email"));

                campo.setEscudo("http://juveniles.esy.es/Escudos/" + json.getString("escudo"));

            } catch (JSONException e) {
                e.printStackTrace();
            }
            listJornadas.add(campo);
            adapter.notifyDataSetChanged();
        }
    }

    [COLOR=#808000 @override
[/color]public boolean onQueryTextChange(String newText) {
        final List<Estadisticas> filteredModelList = filter(listJornadas, newText);

        adapter.setFilter(filteredModelList);
        return true;
    }

    [COLOR=#808000 @override
[/color]public boolean onQueryTextSubmit(String query) {
        return false;
    }

    private List<Estadisticas> filter(List<Estadisticas> models, String query) {
        query = query.toLowerCase();
        final List<Estadisticas> filteredModelList = new ArrayList<>();
        for (Estadisticas model : models) {
            final String poblacion = model.getPoblacion().toLowerCase();
            final String equipo = model.getEquipo().toLowerCase();

            if (poblacion.contains(query)) {
                filteredModelList.add(model);
            }
            else if (equipo.contains(query)) {
                filteredModelList.add(model);
            }
        }
        return filteredModelList;

    }
}
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 00:43:16 (GMT +1)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007