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

マップに配置する前に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

Adapterクラスで、タイトルを設定している間、休耕として試してください。

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

于 2013-03-13T13:31:06.340 に答える