1
ListView
에 인터넷의 이미지가있는 일부 HTML을 표시해야합니다. 이미지는 사용자 정의 Html.ImageGetter
에서 처리됩니다. 문제는 내부에 이미지를 다운로드 할 수있는 TextView
이 필요합니다. 따라서 ArrayAdapter
의 getView
메서드 내부에 HTML 구문 분석을 통합해야합니다. 하지만이 메소드는 안드로이드 시스템에서 요소를 재활용하고 다시 그릴 때 매우 자주 호출됩니다.ListView 내부의 사용자 정의 ImageGetter가있는 Html.fromHtml() 재활용 문제
어떻게하면이 재활용이 중단 될 수 있습니까? 다른 흐름을 사용해야한다고 가정합니다.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView view = new TextView(context);
CharSequence element = getItem(position);
CharSequence html = Html.fromHtml(element.toString(), new MessageImageGetter(context, view), null);
view.setText(html);
view.setPadding(12, 4, 12, 4);
return view;
}
어쩌면 목록과 같은 행동을 재활용 자주 다시 그리기하지 않습니다
ListView
및
ArrayAdapter
의 사용없이 가능하다 : 이것은 내 현재
getView()
방법이다.
이 'Thing'을 TextView로 만들 수 있습니까? 'Html.fromHtml()'*은 이미지를 다운로드 할 수있는 TextView를 필요로하므로 사용할 수 있어야합니다. – tolgap
@tolgap : "이 일을 TextView로 만들면 받아 들일 수 있습니까?" -- 아니. 위젯은 비쌉니다. 'ListView'와'ListAdapter'의 목표는'getView()'처리의 일부로 그것들을 재활용하는 것입니다. "Html.fromHtml()은 이미지를 다운로드 할 수 있도록 TextView가 필요하므로 사용 가능해야합니다."- Html.fromHtml()은'TextView'와 아무 관련이 없습니다. 그것은 'Spannable'을 만듭니다. 'TextView'에 넣었을 겁니다. 'ImageGetter'에 의해 반환 된 Drawables은'Spannable' 자체에 저장됩니다. TextView는 렌더링시에만 사용됩니다. – CommonsWare
'ImageGetter'에'TextView'를 포함시키지 않으면 다운로드가 완료되면'Drawable'을 표시하기 위해'TextView'를 무효화 할 수 없습니다. 다른 아이템이리스트에 추가되거나 스크롤이 시작될 때까지 Drawables가 보이지 않게됩니다. – tolgap