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

Respuesta
 
Herramientas
  #1  
Viejo 07/05/17, 11:39:34
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
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
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
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   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 08:31:01 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /