Android 는 자동 으로 키워드 와 일치 하고 빨간색 기능 을 표시 합 니 다.

본 논문 의 사례 는 안 드 로 이 드 가 키워드 빨간색 과 일치 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
1.단일 키워드 일치
검색 내용 만 일치 하면  간단하게 쓸 수 있 습 니 다.코드 는 다음 과 같 습 니 다.

if (name != null && name.contains(mKeyWord)) { 
   int index = name.indexOf(mKeyWord); 
   int len = mKeyWord.length(); 
   Spanned temp = Html.fromHtml(name.substring(0, index) 
     + "<font color=#FF0000>" 
     + name.substring(index, index + len) + "</font>" 
     + name.substring(index + len, name.length())); 
 
   holder.tv_name.setText(temp); 
  } else { 
   holder.tv_name.setText(name); 
} 
위의 name 은 전체 item 내용 을 표시 하려 는 것 입 니 다.  mKeyWord 는 검색 의 키워드 입 니 다.  holder.tv_name 은 현재 textview 컨트롤 입 니 다. 
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<String> 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("<font color='#FF0000'>"+str.substring(index,index+next.length())+"</font>"); 
  String str1=str.substring(index+next.length(),str.length()); 
  addChild(str1,inputs,resStr);//           
 } 
 return resStr; 
} 

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기