TextView fromHtml

Интерфейс, диалоги, темы, стили, меню
Ответить
Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

TextView fromHtml

Сообщение rezak90 » 16 июл 2012, 15:07

такая задача: основной компонент ListView, в него грузятся TextView, в TextView грузится html код (для удобства, так как должна отображаться картинка с небольшим текстом). проблема в том что приложение виснет когда прокручивается список, виснет не на долго но тупит конркетно, думаю из-за того что картинки подгружаются с и-нета + ещё потому что они перерисовуются в процессе. Вот код:

Код: Выделить всё

public View getView(int position, View convertView, ViewGroup parent) {
		LayoutInflater inflater = (LayoutInflater) CONTEXT.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		View rowView = inflater.inflate(R.layout.rss_items_listview_layout, parent, false);
		TextView tvItemList = (TextView)rowView.findViewById(R.id.tvItemList);
		String content = null;
		RssItemFull item = getItem(position);
		if(item.getEnclosure() != null) {
			content = "<html><head><meta charset='"+ item.getEncoding() +"'>" + 
	        		"</head><body><p><img src='" +
	        		item.getEnclosure() + "'>" + item.getTitle() +"<br>" + item.getDate() +"</p></body></html>";
		}
		else {
			content = "<html><head><meta charset='" + item.getEncoding() +"'>" +
					"</head><body><p align='center'>" + item.getTitle() + "</p><br><p align='center'>" +
					item.getDate() + "</p></body></html>";
		}
		
		Spanned s = Html.fromHtml(content, new ImageGetter() {
        	public Drawable getDrawable(String source) {                  
                Drawable d = null;
                try {
                	InputStream src = imageFetch(source);
                    d = Drawable.createFromStream(src, "src");
                    if(d != null){
                    	d.setBounds(0 ,0, 70, 70);
				    }
                } catch (MalformedURLException e) {
                	e.printStackTrace(); 
				} catch (IOException e) {
				    e.printStackTrace();  
				}
                return d;
            }
        }, null);
		
		tvItemList.setText(s);
		
		return rowView;
	}
	
	public InputStream imageFetch(String source) throws MalformedURLException,IOException {
		URL url = new URL(source);
		Object o = url.getContent();
		InputStream content = (InputStream)o;  
		return content;
    }
это кусок с адаптера, думаю всё понятно тута.
R.id.team
Политика на форуме запрещена

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: TextView fromHtml

Сообщение rezak90 » 16 июл 2012, 15:54

выделил это всё дело в отдельный поток, потому что на 4 дроиде выскакивала ошибка NetworkOnMainThreadException, вроде тупит уже не так, но тему оставлю открытой может у кого то будет более светлая идея чем у меня.
R.id.team
Политика на форуме запрещена

Ответить