2016-10-07 36 views
1

自定義列表視圖中的android搜索功能不起作用。 RestListModel是我的模型名稱。Android搜索選項不起作用?

  1. 這是我的上ManActivity代碼:
import android.support.v7.widget.SearchView; 

    private List<RestListModel> rdataList; 
    private ListView listView; 
    private CustomListAdapter adapter; 
    SearchView search; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.quick_list); 
     rdataList = new ArrayList<RestListModel>(); 
     listView = (ListView) findViewById(R.id.rrlist); 
     adapter = new CustomListAdapter(this, rdataList); 
     listView.setAdapter(adapter); 
     listView.setTextFilterEnabled(true); 
    } 
    // on create finished here 

    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menutosearch, menu); 

     final MenuItem myActionMenuItem = menu.findItem(R.id.action_search); 

     search = (SearchView) myActionMenuItem.getActionView(); 

     //*** setOnQueryTextListener *** 
     search.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 

      @Override 
      public boolean onQueryTextSubmit(String query) { 
       // TODO Auto-generated method stub 

       return false; 
      } 

      @Override 
      public boolean onQueryTextChange(String newText) { 
       // TODO Auto-generated method stub 
       adapter.filter(newText); 
       return false; 
      } 
     }); 
     return true; 
    } 
  • 適配器類:
  • public class CustomListAdapter extends BaseAdapter { 
         private Activity activity; 
         private LayoutInflater inflater; 
         private List<RestListModel> rItems=null; 
         private ArrayList<RestListModel> arraylist; 
    
         public CustomListAdapter(Activity activity, List<RestListModel> restItems) { 
          this.activity = activity; 
          this.rItems = restItems; 
          this.arraylist = new ArrayList<RestListModel>(); 
          this.arraylist.addAll(rItems); 
         } 
    
         /// I think something is wrong here 
    
    
    
         @Override 
         public int getCount() { 
          return rItems.size(); 
    
         } 
    
         @Override 
         public Object getItem(int location) { 
          return rItems.get(location); 
         } 
    
         @Override 
         public long getItemId(int position) { 
          return position; 
         } 
    
    
    
         @Override 
         public View getView(int position, View convertView, ViewGroup parent) { 
    
          convertView.setOnClickListener(new View.OnClickListener() { 
    
           public void onClick(View v) { 
    
           } 
          }); 
    
          return convertView; 
         } 
    
         // this is the actually filter Filter method. 
         public void filter(String charText) { 
          charText = charText.toLowerCase(Locale.getDefault()); 
          rItems.clear(); 
          if (charText.length() == 0) { 
           rItems.addAll(arraylist); 
          } else { 
           for (RestListModel wp : arraylist) { 
            if (wp.getName().toLowerCase(Locale.getDefault()) 
              .contains(charText)) { 
             rItems.add(wp); 
            } 
           } 
          } 
          notifyDataSetChanged(); 
         } 
        } 
    

    回答

    0

    變化CustomListAdapter這樣的:

    public class CustomListAdapter extends BaseAdapter { 
        ... 
    
        public CustomListAdapter(Activity activity, List<Movie> movieItems) { 
         this.activity = activity; 
         this.movieItems= new ArrayList<>(movieItems); 
         this.arraylist = new ArrayList<>(movieItems); 
        } 
    
        ... 
    
        public void add(Movie movie) { 
         movieItems.add(movie); 
         arraylist.add(movie); 
        } 
    } 
    

    並添加這樣的:

    public void onResponse(JSONArray response) { 
        ... 
         // adding movie to movies array 
         adapter.add(movie); 
        ... 
    } 
    
    +0

    感謝這麼多!它的工作:) – Sharat

    0

    您正在僅與一個陣列比較與字符串。我需要添加具有三個不同字符串字段的模型。

    public CustomListAdapter(Activity activity, List<RestListModel> restItems) { 
         this.activity = activity; 
         this.rItems = restItems; 
         this.arraylist = new ArrayList<RestListModel>(); 
         this.arraylist.addAll(rItems); 
        }