Android 검색 결과는 키워드와 일치하며 강조 표시됩니다.

1. 단일 키워드 일치
단일 키워드일 경우 먼저 그의 아래 첨자, 길이를 계산한 다음 아래 첨자에서 아래 첨자+길이까지 특수 색상으로 표시하면 됩니다. 코드는 다음과 같습니다.
if (name != null && name.contains(keyWord)) {    
           int index = name.indexOf(keyWord);    
           int len = keyWord.length();    
      Spanned temp = Html.fromHtml(name.substring(0, index)    
    + ""    
    + name.substring(index, index + len) + ""    
    + name.substring(index + len, name.length()));
    }

temp는 바뀐 글자입니다. 키워드는 빨간색을 넣었습니다.2. 다중 키워드가 일치할 때 우리가 검색을 할 때 사용자가 입력한 키워드를 서버에서 분리하고 여러 개의 키워드로 나누어 검색해야 한다.그러면 서버에서 데이터를 되돌릴 때 키워드는 여러 개로 나누어집니다.즉, 되돌아오는 것은 하나의 키워드 그룹이다.
이런 경우 클라이언트가 키워드를 일치시킬 때 단락의 여러 키워드를 모두 일치시키고 표시하는 알고리즘을 써야 한다.
코드는 다음과 같습니다.
adapter의 논리:
/** 
   name item        item        
   keyList            list   
    */    

    StringBuffer str = new StringBuffer("");  
    str =  Utils.addChild(name, keyList, str);  
        holder.contentTv.setText(Html.fromHtml(str.toString()));  

다음은 일치:
/** 
 *         ,             HTML     
 * @param str            
 * @param inputs          
 * @param resStr           
 */  
public static StringBuffer addChild(String str,List inputs,StringBuffer resStr){  
    int index=str.length();//      ,          
    String next="";//  str           
    for (int i = inputs.size() -1 ; i>= 0;i--) {  
        String theNext=inputs.get(i);  
        int theIndex=str.indexOf(theNext);  
        if(theIndex==-1){//          
            inputs.remove(i);  
        }else if(theIndex<index){  
            index=theIndex;//      
            next=theNext;  
        }  
    }  

    //      ,                 ,        
    if(index==str.length()){  
        resStr.append(str);  
    }else{  
        resStr.append(str.substring(0,index));  
        resStr.append(""+str.substring(index,index+next.length())+"");  
        String str1=str.substring(index+next.length(),str.length());  
        addChild(str1,inputs,resStr);//            
    }  
    return resStr;  
} 

좋은 웹페이지 즐겨찾기