0

我正在开发一个应用程序,我在其中解析JSON数据并在列表视图中修复结果。作为JSON回应,我得到以下回应:

{
"searchdata": {
    "webresult": [
        {
            "title": "<b>Android</b>",
            "desc": "Discover a new flavor of Jelly Bean <b>Android</b> 4.2 introduces a completely new camera experience, a new form of typing that helps you power ...",
            "link": "http://www.android.com/"
        },
        {
            "title": "<b>Android</b> (operating system) - Wikipedia, the free encyclopedia",
            "desc": "<b>Android</b> is a Linux -based operating system designed primarily for touchscreen mobile devices such as smartphones and tablet computers. Initially developed by <b>Android</b> ...",
            "link": "http://en.wikipedia.org/wiki/Android_(mobile_phone_platform)"
        }
    ]
}

}

title您所见,Android标签即将到来。我想让它变得大胆。

这是我为在列表视图中修复这些响应所做的工作。

try {
    HttpClient hClient = new DefaultHttpClient();
HttpGet hGet = new HttpGet("MY API");
ResponseHandler<String> rHandler = new BasicResponseHandler();
data = hClient.execute(hGet, rHandler);

JSONObject rootObj = new JSONObject(data);

JSONObject jSearchData = rootObj.getJSONObject("searchdata");

JSONArray jsonArray = jSearchData.getJSONArray("webresult");

for (int i = 0; i < jsonArray.length(); i++) {

    JSONObject objJson = jsonArray.getJSONObject(i);

    String title = objJson.getString("title");
    String desc = objJson.getString("desc");
    String link = objJson.getString("link");

    HashMap<String, String> map = new HashMap<String, String>();

    map.put("title", title);
    map.put("description", desc);
    map.put("link", link);

    searchList.add(map);
    }

} catch (Exception e) {
       System.out.println("Exception: " + e);
}

通过上面的代码,我得到了响应并将它们存储到Hashmap. 之后,我使用自定义布局来显示内容。以下代码可帮助我在布局中固定值。

ListAdapter adapter = new SimpleAdapter(getApplicationContext(),
searchList, R.layout.list_row, new String[] { "title","description", "link" }, new int[] { R.id.title,R.id.desc, R.id.url });

setListAdapter(adapter);

这就是一切顺利时的样子。

布局设备的屏幕截图

如您所见,html标签即将到来。请任何人建议如何使html粗体标签内的文本变为粗体?

任何帮助将不胜感激。

4

4 回答 4

4

您可以使用SimpleAdapter.ViewBinder并设置一个htmlTextView而不是纯文本。

SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), searchList, R.layout.list_row, new String[] { "title","description", "link" }, new int[] { R.id.title,R.id.desc, R.id.url });
SimpleAdapter.ViewBinder binder = new SimpleAdapter.ViewBinder() {
    @Override
    public boolean setViewValue(View view, Object object, String value) {
        if (view instanceof TextView) {
            ((TextView) view).setText(Html.fromHtml(value));
            return true;
        }

        return false;
    }
};

adapter.setViewBinder(binder);
setListAdapter(adapter);
于 2013-03-13T13:52:48.660 回答
2

在放入 Map 之前使用 Html.fromHtml()

map.put("title", HTML.fromHtml(title));
map.put("description", HTML.fromHtml(desc));
map.put("link", HTML.fromHtml(link));
于 2013-03-13T13:29:24.783 回答
1

只需使用 SpannedString 代替普通字符串,然后使用 setText() 将其显示在 TextView 上。

示例: SpannedString spannedText = new SpannedString(Html.fromHtml(value)); textView.setText(spannedText);

于 2013-09-05T22:16:19.193 回答
0

在适配器类中设置标题时,请尝试作为休闲方式。

holder.title.setText(Html.fromHtml(searchList.getTitle))。

于 2013-03-13T13:31:06.340 回答