Android отображает HTML в ListView - PullRequest
6 голосов
/ 13 марта 2012

Извините, если это очевидно для всех остальных, но у меня возникли незначительные трудности с пониманием того, как отобразить html внутри моего списка.

Мой список объявлен.

ListView lv1 = (ListView) findViewById(R.id.ListView01);

Я заполняю его (не показан), а затем устанавливаю свой список просмотра с помощью ArrayAdapter.

lv1.setAdapter(new ArrayAdapter<String>(SearchByFood.this, R.layout.new_list_view, foods));

Далее я создаю новый массив строк, в которые я хочу добавить жирные теги. Затем я добавляю этот новый массив (называемый arr_sort) в arrayadapter вместо метода onTextChanged ().

lv1.setAdapter(new ArrayAdapter<String>(SearchByFood.this, R.layout.new_list_view, arr_sort));

Итак, теперь в моем новом массиве строк есть теги . Как мне сделать, чтобы мой список отображал жирный текст?

Вот мой new_list_view

    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/grey2"
    android:textSize="20sp"
    android:gravity="center_vertical"
    android:paddingLeft="6dip"
    android:minHeight="40dip"
/> 

А вот моя часть ListView в моем основном макете.

        <ListView
        android:id="@+id/ListView01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/rounded_corners_green"
        android:cacheColorHint="#00000000"
        android:divider="@color/green6"
        android:dividerHeight="1px"
        android:fastScrollEnabled="true" >
    </ListView>

Любая помощь будет высоко ценится.

Ответы [ 8 ]

15 голосов
/ 14 марта 2012

Хорошо, так что Джитендра Шарма правильно понял мой сценарий, но мне нужно было переопределить метод getView. Или, по крайней мере, это то, что работает для меня. Затем в методе getView я смог установить текст для отображения в HTML.

            ArrayAdapter<String> adapter = new ArrayAdapter<String>(SearchByFood.this, R.layout.new_list_view, arr_sort)
            {
                @Override
                public View getView(int position, View convertView, ViewGroup parent) 
                {
                    View row;

                    if (null == convertView) {
                    row = mInflater.inflate(R.layout.new_list_view, null);
                    } else {
                    row = convertView;
                    }

                    TextView tv = (TextView) row.findViewById(android.R.id.text1);
                    tv.setText(Html.fromHtml(getItem(position)));
                    //tv.setText(getItem(position));

                    return row;
                }

            };
            lv1.setAdapter(adapter);
3 голосов
/ 16 июня 2014

Если вы используете SimpleAdapter, вот код, который включает HTML в TextView.

adapter.setViewBinder(new SimpleAdapter.ViewBinder() {  
    public boolean setViewValue(View view, Object data, String textRepresentation) {  
        if (data instanceof Spanned && view instanceof TextView) {  
            ((TextView) view).setText((Spanned) data);  
        } else {  
            ((TextView) view).setText(Html.fromHtml(String.valueOf(data))); 
        }  
        return true;  
        }  
    }  
); 

Ссылка: [ссылка] (http://android.jreactor.com/2012/07/17/simpleadapter-spanned-html-fromhtml/)

3 голосов
/ 13 марта 2012

переопределяет метод getItem Адаптера и делает следующее:

ArrayAdapter<String> adapter= ArrayAdapter<String>(SearchByFood.this, R.layout.new_list_view, arr_sort){
     public Object getItem(int position)
     {
          return Html.fromHtml(arr_sort.get(position));
     }
};
2 голосов
/ 13 марта 2012

Если все, что вам нужно, это отобразить некоторый текст, где части текста должны быть выделены жирным шрифтом, все, что вам нужно, - это один TextView и правильно отформатированный текст (с добавлением ) и выполните следующие действия:

textview.setText(Html.fromHtml(text));

Для получения дополнительной информации о том, что TextView + Html может поддерживать, см. здесь

1 голос
/ 13 марта 2012

Если у вас есть возможность загружать свои тексты из strings.xml, добавление тега автоматически выделит ваш текст.Однако, если ваши тексты являются динамическими, вам придется создать пользовательский адаптер , и в нем установить текст, используя textView.setText(Html.fromHtml(yourText));

0 голосов
/ 25 июня 2015

, если вы используете ksoap для html-данных из любого механизма базы данных

yourVariable=String.valueOf(Html.fromHtml(ic.getProperty(0).toString()))
0 голосов
/ 05 декабря 2013

Это также работает и, возможно, намного проще.Сначала передайте данные из String [] в Spanned []

Spanned[] myhtmldata = new Spanned[mydata.length];
for(int i = 0 ; i < mydata.length; i++) {
myhtmldata[i] = Html.fromHtml(mydata[i]);
}

Затем объявите адаптер ArrayAdapter с помощью параметра CharSequence

ArrayAdapter<CharSequence> linksadapter = new ArrayAdapter<CharSequence>(getActivity(), R.layout.list_item, R.id.textview, myhtmldata);         
setListAdapter(linksadapter);

Заимствовано из здесь

0 голосов
/ 06 сентября 2013
ArrayAdapter<Spanned> listAdapter = new ArrayAdapter<Spanned>(MyActivity.this, R.layout.row);
listAdapter.add(Html.fromHtml(htmlText));
listAdapter.add(Html.fromHtml(htmlText));
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...