2016-03-23 17 views
0

Sonunda arama çubuğunda arama yapmayı başardım ancak taşma simgesini (ç nokta) karşılık gelen menü ile kaybettim. Bana yardım edebilir misiniz? Teşekkür ederim!Taşma menüsündeki actionBar'da arama yapın

<item 
    android:id="@+id/action_search" 
    app:actionViewClass="android.widget.SearchView" 
    android:icon="@drawable/ic_launcher" 
    app:showAsAction="always" 
    android:title="Search"/> 

<item 
    android:id="@+id/empty" 
    android:title="Opciones" 
    android:orderInCategory="101" 
    app:showAsAction="always" 
    android:icon="@drawable/ic_action_overflow"> 

    <menu> 
     <item android:id="@+id/action_registro" 
      app:showAsAction="ifRoom" 
      android:title="Registro de cuenta" 
      /> 

     <item android:id="@+id/action_contacto" 
      app:showAsAction="ifRoom" 
      android:title="Contacto" 
      /> 

     <item android:id="@+id/action_help" 

      app:showAsAction="ifRoom" 
      android:title="Ayuda" 
      /> 

    </menu> 

</item> 

enter image description here

<?xml version="1.0" encoding="utf-8"?> 

Beni daha fazla kod yazmak gerekiyor?

cevap

1
## The adapter ##  

    public class Adaptador_Prestadores extends RecyclerView.Adapter<Adaptador_Prestadores.PrestadoraViewHolder> implements View.OnClickListener { 

     private final LayoutInflater inflater; 
     private List<Prestadora> list_prestadoras; 
     int pos; 
     Context context; 

     public Adaptador_Prestadores(Context context, List<Prestadora> list_prestadoras) { 
      inflater = LayoutInflater.from(context); 
      this.list_prestadoras = list_prestadoras; 
      this.context = context; 
     } 

     @Override 
     public PrestadoraViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      final View itemView = inflater.inflate(R.layout.search_filtro, parent, false); 
      PrestadoraViewHolder prestadora = new PrestadoraViewHolder(itemView); 

      return prestadora; 
     } 

     @Override 
     public void onBindViewHolder(PrestadoraViewHolder holder, int position) { 
      final Prestadora prestadora = this.list_prestadoras.get(position); 
      holder.bind(prestadora); 
     } 
     @Override 
     public int getItemCount() { 
      return this.list_prestadoras.size(); 
     } 

     public void setPrestadoras(List<Prestadora> list_prestadoras) { 
      this.list_prestadoras = new ArrayList<>(list_prestadoras); 
     } 

     private OnRecyclerViewItemClickListener mOnItemClickListener = null; 

     public interface OnRecyclerViewItemClickListener { 
      void onItemClick(View view, int resId); 
     } 

     @Override 
     public void onClick(View v) { 
      if (mOnItemClickListener != null) 
      { 
        mOnItemClickListener.onItemClick(v, (Integer) v.getTag()); 
      } 
     } 

     public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) { 
      this.mOnItemClickListener = listener; 
     } 

     public Prestadora getPrestador(int pos) 
     { 
      return list_prestadoras.get(pos); 
     } 


     class PrestadoraViewHolder extends RecyclerView.ViewHolder{ 

      private final TextView txt_prestadora; 

      public PrestadoraViewHolder(View itemView) { 
       super(itemView); 

       txt_prestadora = (TextView) itemView.findViewById(R.id.txt_filtro); 

      } 

      public void bind(Prestadora model) { 
       txt_prestadora.setText(model.getNombre()); 


      } 
     } 

     public Prestadora removeItem(int position) { 
      final Prestadora localidad = this.list_prestadoras.remove(position); 
      notifyItemRemoved(position); 
      return localidad; 
     } 

     public void addItem(int position, Prestadora prestadora) { 
      this.list_prestadoras.add(position, prestadora); 
      notifyItemInserted(position); 
     } 

     public void moveItem(int fromPosition, int toPosition) { 
      final Prestadora model = this.list_prestadoras.remove(fromPosition); 
      this.list_prestadoras.add(toPosition, model); 
      notifyItemMoved(fromPosition, toPosition); 
     } 

     public void animateTo(List<Prestadora> list_localidades) { 
      applyAndAnimateRemovals(list_localidades); 
      applyAndAnimateAdditions(list_localidades); 
      applyAndAnimateMovedItems(list_localidades); 
     } 

     private void applyAndAnimateRemovals(List<Prestadora> list_filtros) { 
      for (int i = this.list_prestadoras.size() - 1; i >= 0; i--) { 
       final Prestadora filtro = this.list_prestadoras.get(i); 
       if (!list_filtros.contains(filtro)) { 
        removeItem(i); 
       } 
      } 
     } 

     private void applyAndAnimateAdditions(List<Prestadora> list_localidades) { 
      for (int i = 0, count = list_localidades.size(); i < count; i++) { 
       final Prestadora prestadora = list_localidades.get(i); 
       if (!this.list_prestadoras.contains(prestadora)) { 
        addItem(i, prestadora); 
       } 
      } 
     } 

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

    } 

## Activity or fragment ## 
    @Override 
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
      inflater.inflate(R.menu.menu_nuevo_eturn, menu); 

      final MenuItem item = menu.findItem(R.id.action_search); 
      final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item); 
      searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
       @Override 
       public boolean onQueryTextSubmit(String query) { 
        return false; 
       } 

       @Override 
       public boolean onQueryTextChange(String query) { 
        final List<Prestadora> filteredModelList = filter(dao.traerPrestadoras(localidad), query); 
        adaptador_prestador.animateTo(filteredModelList); 
        recycler_nuevo_eturn.scrollToPosition(0); 
        return true; 
       } 
      }); 
     } 



    ## XML Menu ##  
    <menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto"> 

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

    </menu> 
İlgili konular