有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 安卓 json向文本添加超链接

以下是我的json输出示例:

{"podcast":[{"link":"rtsp:\\live.xxx.ro:554\vod\_definst_\mp4:05\rfm_00.mp4","name":"Recording 1"}

为了解析json代码,我使用以下方法:

private static final String TAG_LINK = "link";
        private static final String TAG_NAME = "name";
try {
                    int success = json.getInt(TAG_SUCCESS);

                    if (success == 1) {
                        products = json.getJSONArray(TAG_PRODUCTS);
                        for (int i = 0; i < products.length(); i++) {
                            JSONObject c = products.getJSONObject(i);
                            String link = c.getString(TAG_LINK);
                            String name = c.getString(TAG_NAME);
                            HashMap<String, String> map = new HashMap<String, String>();
                            map.put(TAG_LINK, link);
                            map.put(TAG_NAME, name);
                            productsList.add(map);
                        }
                    } else {

                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

                return null;
            }

            protected void onPostExecute(String file_url) {
                pDialog.dismiss();
                runOnUiThread(new Runnable() {
                    public void run() {
                        ListAdapter adapter = new SimpleAdapter(
                                PodCast.this, productsList,
                                R.layout.list_item, new String[] {
                                        TAG_NAME, TAG_LINK },
                                new int[] { R.id.link, R.id.name });
                        setListAdapter(adapter);
                    }
                });

对于布局,这是链接视图的代码:

<TextView
        安卓:id="@+id/name"
        安卓:layout_width="fill_parent"
        安卓:layout_height="wrap_content"
        安卓:paddingTop="6dip"
        安卓:paddingLeft="6dip"
        安卓:paddingBottom="6dip"
        安卓:textSize="17dip"
        安卓:autoLink="web"
        安卓:textColor="#fff"
        安卓:textColorLink="#fff"
        安卓:textStyle="bold"/>

一切都很好。。。但是在链接视图中,我得到了整个链接rtsp://live.xxx.ro...etc我希望是这样:<a href="rtsp://...">NAME </a>这样我就有了名字,当我点击它打开指定的链接时。你们能帮我弄清楚怎么做吗


共 (2) 个答案

  1. # 1 楼答案

    您需要设置函数setOnItemClickListener(),并在其中声明如下内容:

    Uri uri = Uri.parse( "http://www.google.com" );
    startActivity( new Intent( Intent.ACTION_VIEW, uri ) );
    
  2. # 2 楼答案

    简单的

    String href = String.format("<a href=\"%s\"> %s </a>", map.get(TAG_LINK), map.get(TAG_NAME));
    textV.setText(Html.fromHTML(href))
    

    或者如果你有一个链接作为资源字符串;只需确保保留的HTML字符不会转换为HTML实体

    一个可能会错误解析的示例:

    <string name="a_link">&lt;a href=&quot;http://www.google.com&quot;&gt;click here&lt;/a&gt;</string>
    

    要修复它,请手动编辑strings.xml,并将HTML实体转换为它们所代表的字符, 使上述内容成为:

    <string name="a_link"><a href="http://www.google.com">click here</a></string>
    

    它应该会起作用