Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android Mostrar HTML en un ListView

Lo siento si esto es obvio para todos los demás, pero estoy teniendo una dificultad menor la comprensión de cómo mostrar html dentro de mi listview.

Mi vista de lista se declara.

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

Yo lo poblo (no se muestra), a continuación, establecer mi listview aquí con un ArrayAdapter.

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

Más abajo, creo una nueva matriz de cadenas que quiero tener en negrita etiquetas en. A continuación, agregar esta nueva matriz (llamada arr_sort) a la matriz de instar un método onTextChanged ().

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

Así que ahora que mi nueva matriz de cadenas tiene etiquetas <b> en ella. ¿Cómo hago que mi listview muestre el texto en negrita?

Aquí está mi 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" /> 

Y aquí está mi parte ListView en mi diseño principal.

  <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> 

Cualquier ayuda sería muy apreciada.

8 Solutions collect form web for “Android Mostrar HTML en un ListView”

Sobreescriba el método getItem del adaptador y realice lo siguiente:

 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)); } }; 

Ok, así que Jitendra Sharma tuvo la idea correcta para mi escenario, pero necesitaba anular el método getView. O al menos eso es lo que funcionó para mí. Entonces en el método de getView pude fijar mi texto para procesar en 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); 

Si todo lo que desea es mostrar un texto donde las partes del texto deben estar en negrita, todo lo que necesita es un TextView, y el texto correctamente formateado (con <b> añadido) y haga lo siguiente:

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

Para obtener más información sobre lo que TextView + Html puede soportar, consulte aquí

Si está utilizando un SimpleAdapter, aquí está el código que habilita HTML en un 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; } } ); 

Ref: [Link] ( http://android.jreactor.com/2012/07/17/simpleadapter-spanned-html-fromhtml/ )

Si tienes la posibilidad de cargar tus textos desde strings.xml, agregando la etiqueta automáticamente en negrita tu texto. Sin embargo, si sus textos son dinámicos, tendrá que crear un adaptador personalizado , y en él para establecer el texto mediante textView.setText(Html.fromHtml(yourText));

 ArrayAdapter<Spanned> listAdapter = new ArrayAdapter<Spanned>(MyActivity.this, R.layout.row); listAdapter.add(Html.fromHtml(htmlText)); listAdapter.add(Html.fromHtml(htmlText)); ... 

Si utiliza ksoap para datos html desde cualquier motor de base de datos

 yourVariable=String.valueOf(Html.fromHtml(ic.getProperty(0).toString())) 

Esto también funciona y es perphaps mucho más simple. Primero, pase sus datos de String [] a Spanned []

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

A continuación, declare el ArrayAdapter utilizando el parámetro CharSequence

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

Tomado de aquí

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.