2015-01-18 2 views
-1

검색의 문제는 첫 번째 단어의 시작입니다 예 : '마드리드'의 검색 결과를 제공하지 않으면 "레알 마드리드"에서 검색하지만 "Real"의 검색 결과가 나에게 줄 경우 "진짜"는 첫 단어입니다 그래서이 문제의 해결책은 무엇입니까? 주셔서 감사합니다 :)사용자 목록에서 검색 ListView

public void setAdapterToListview() { 
    objAdapter = new LatestGridAdapter(getActivity(), R.layout.latest_lsv_item, 
      arrayOfLatestVideo,columnWidth); 
    lsv_latest.setAdapter(objAdapter); 
} 

public void showToast(String msg) { 
    Toast.makeText(getActivity(), msg, Toast.LENGTH_LONG).show(); 
} 

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    inflater.inflate(R.menu.menu_search, menu); 

    final SearchView searchView = (SearchView) menu.findItem(R.id.search) 
      .getActionView(); 

    final MenuItem searchMenuItem = menu.findItem(R.id.search); 
    searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      // TODO Auto-generated method stub 
      if(!hasFocus) { 
       searchMenuItem.collapseActionView(); 
       searchView.setQuery("", false); 
      } 
     } 
    }); 


    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextChange(String newText) { 

      textlength=newText.length(); 
      arrayOfLatestVideo.clear(); 

      for(int i=0;i< allArrayVideoName.length;i++) 
      { 
       if(textlength <= allArrayVideoName[i].length()) 
       { 
        if(newText.toString().equalsIgnoreCase((String) allArrayVideoName[i].substring(0, textlength))) 
        { 


         ItemLatest objItem = new ItemLatest(); 

         objItem.setId(Integer.parseInt(allArrayVideoId[i])); 
         objItem.setCategoryId(Integer.parseInt(allArrayVideoCatId[i])); 
         objItem.setCategoryName(allArrayVideoCatName[i]); 
         objItem.setDescription(allArrayVideoDesc[i]); 
         objItem.setVideoId(allArrayVideo[i]); 
         objItem.setVideoName(allArrayVideoName[i]); 
         objItem.setVideoUrl(allArrayVideourl[i]); 
         objItem.setImageUrl(allArrayImageUrl[i]); 
         arrayOfLatestVideo.add(objItem); 

        } 
       } 
      } 

      setAdapterToListview(); 
      return false; 
     } 

     @Override 
     public boolean onQueryTextSubmit(String query) { 
      // Do something 
      return true; 
     } 
    }); 

} 

답변

1

이 검색에 대한 this 방법을 사용해보십시오. -1이 아닌 다른 것을 반환하면 일치하는 항목이 있음을 의미합니다. 모든 것을 소문자로 바꿔서 대소 문자를 구분하지 않아도됩니다.

@Override 
    public boolean onQueryTextChange(String newText) { 

     textlength=newText.length(); 
     arrayOfLatestVideo.clear(); 

     for(int i=0;i< allArrayVideoName.length;i++) 
     { 
      if(textlength <= allArrayVideoName[i].length()) 
      { 
       if(allArrayVideoName[i].toLowerCase().indexOf(newText.toLowerCase())!=-1) 
       { 
        ItemLatest objItem = new ItemLatest(); 

        objItem.setId(Integer.parseInt(allArrayVideoId[i])); 
        objItem.setCategoryId(Integer.parseInt(allArrayVideoCatId[i])); 
        objItem.setCategoryName(allArrayVideoCatName[i]); 
        objItem.setDescription(allArrayVideoDesc[i]); 
        objItem.setVideoId(allArrayVideo[i]); 
        objItem.setVideoName(allArrayVideoName[i]); 
        objItem.setVideoUrl(allArrayVideourl[i]); 
        objItem.setImageUrl(allArrayImageUrl[i]); 
        arrayOfLatestVideo.add(objItem); 

       } 
      } 
     } 

     setAdapterToListview(); 
     return false; 
    } 
+0

매우 감사합니다. 좋은 대답 – BestAndroid

+0

기꺼이 도와 드리겠습니다. – torque203