Android在ListView中显示HTML

S.A*_*Jay 6 android android-layout

对不起,如果这对其他人来说是显而易见的,但我在理解如何在listview中显示html方面遇到了一些小麻烦.

我的列表视图已声明.

ListView lv1 = (ListView) findViewById(R.id.ListView01);
Run Code Online (Sandbox Code Playgroud)

我填充它(未显示)然后使用ArrayAdapter设置我的listview.

lv1.setAdapter(new ArrayAdapter<String>(SearchByFood.this, R.layout.new_list_view, foods));
Run Code Online (Sandbox Code Playgroud)

再往下我创建了一个新的字符串数组,我希望在其中加入粗体标记.然后我将这个新数组(称为arr_sort)添加到arrayadapter中,并使用onTextChanged()方法.

lv1.setAdapter(new ArrayAdapter<String>(SearchByFood.this, R.layout.new_list_view, arr_sort));
Run Code Online (Sandbox Code Playgroud)

现在,我的新字符串数组中包含<b>标签.如何使listview显示粗体文本?

这是我的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"
/> 
Run Code Online (Sandbox Code Playgroud)

这是我的主要布局中的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>
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

S.A*_*Jay 15

好的,所以Jitendra Sharma对我的场景有正确的想法,但我需要覆盖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);
Run Code Online (Sandbox Code Playgroud)


jee*_*eet 3

重写 Adapter 的 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));
     }
};
Run Code Online (Sandbox Code Playgroud)