2017-12-11 6 views
0

이 질문에 대한 답변이 많이 있지만 작동하지 않는 것 같습니다. TextViews 및 ImageViews로 구성된 사용자 지정 항목이있는 ListView가 있습니다.ListView 항목의 TextView에서 클릭 가능한 링크 만들기

XML 피드를 통해 일부 데이터가 수신됩니다.

나는 안드로이드 6에있어
private static Spanned fromHtml(String html){ 
    Spanned result; 
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { 
     result = Html.fromHtml(html,Html.FROM_HTML_MODE_LEGACY); 
    } else { 
     result = Html.fromHtml(html); 
    } 
    return result; 
} 

그래서 나는 "다른"절에 결국 :이 방법을 내 어댑터에서

<![CDATA[ <p>My text <a href="http://myhost.com/link/to/fM" target="_blank">click here</a>.</p> ]]> 

: 요소 중 하나는 같은 HTML이 포함되어 있습니다.

"holder"클래스를 사용하여 ListView 항목에 필요한 모든 TextViews와 ImageViews를 정의합니다. 홀더 인스턴스는 다음과 같이 할당됩니다

view.setTag(myHolder); 

문제의 텍스트 뷰 I는 다음과 같이 채울 :

String s = fromHtml(xmlItem.Description).toString(); 
myHolder.description.setText(fromHtml(s)); 

나는

fromHtml(s) 

단지의 setText (들) I를 생략하면 내 CDATA에서 모든 태그 가져 오기

나는 정말로 텍스트를 "여기를 클릭하십시오"를 cli로 렌더링하고 싶습니다. ckable 링크 ...

내가 뭘 잘못하고 있니?

답변

0

의 문제가이있다 :

String s = fromHtml(xmlItem.Description).toString(); 

setText() 방법은 CharSequence 방법을 구현하는 것을 허용합니다. 대부분의 사람들은 보통 String 인스턴스를 전달합니다. 이는 StringCharSequence을 구현하므로 완전히 정상적으로 처리됩니다. 그러나 문자열은 링크를 처리하는 데 필요한 정보를 포함하지 않는, 그래서 당신은이 대신에 그 라인을 변경해야합니다 :

Spanned s = fromHtml(xmlItem.Description); 

Spanned 또한 CharSequence 인터페이스를 구현하는, 그래서 당신은 방금 전에 같이 setText()s를 전달할 수 있습니다. 이제 강조 표시된 링크가 표시됩니다.

하지만 전체 해결책은 아닙니다. 또한 처리 방법을 알고 있어야합니다. 링크는 fromHtml()이 생성하는 링크입니다. 이 경우 setMovementMethod() 호출을 사용합니다. 당신은 (새 뷰를 작성하고 귀하의 convertView가 null의 경우, 예를 들어) 번이 호출 할 필요가 있지만, 당신은뿐만 아니라이 줄을 추가해야합니다 : 그것은 작동

myHolder.description.setMovementMethod(LinkMovementMethod.getInstance()); 
+0

을! 귀하의 조언을 따르고 CDATA 시작 및 종료 태그도 수동으로 제거했습니다. 그랬어! 대단히 감사합니다! – CJe

+0

그냥 항목 클릭 이벤트가 더 이상 내 listView 항목에서 해고되지 않습니다 발견 : -/그 모든 해결책? – CJe

+0

@CJe 그래서 사용자가 링크를 클릭 할 때 한 가지, 다른 곳을 클릭 할 때 다른 일이 발생하기를 원하십니까? 그리고 뷰에서'OnClickListener'를 사용하고 있습니까, 아니면리스트에서'OnItemClickListener'를 사용하고 있습니까? –