![]() |
|
| 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 |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
|
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 Error 173, 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;
}
}
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());
}
}
}
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 |
|
|
|
#2
|
|
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;
}
}
|
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 00:43:16 (GMT +1)
HTCMania: líderes desde el 2007

173, 32) error: cannot find symbol method animateTo(List<Estadisticas>) 



