1

我有这个代码:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.apache.http.NameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.romantic.aacplay.R;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.os.AsyncTask;
import android.os.Bundle;
// import android.text.Html;
// import android.text.Html;
import android.text.Html;
import android.util.Log;
import android.view.View;
import android.widget.ListAdapter;
import android.widget.SimpleAdapter;


public class PodCast extends ListActivity {
        private ProgressDialog pDialog;


        JSONParser jParser = new JSONParser();

        ArrayList<HashMap<String, String>> productsList;

        private static String url_all_products = "http://mysite.net/andro/pcast.php";
        private static final String TAG_SUCCESS = "success";
        private static final String TAG_PRODUCTS = "podcast";
        private static final String TAG_LINK = "link";
        private static final String TAG_NAME = "nume";

        JSONArray products = null;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.poadcast);

             GradientDrawable gd = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[] {Color.RED,Color.BLACK});
                View title = getWindow().findViewById(android.R.id.title);
                View titleBar = (View) title.getParent();
                titleBar.setBackgroundDrawable(gd);


            productsList = new ArrayList<HashMap<String, String>>();

            new LoadAllProducts().execute();

        }

        class LoadAllProducts extends AsyncTask<String, String, String> {
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                pDialog = new ProgressDialog(PodCast.this);
                pDialog.setMessage("Se incarca. Asteapta...");
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(false);
                pDialog.show();

            }

            protected String doInBackground(String... args) {

                List<NameValuePair> params = new ArrayList<NameValuePair>();
                JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params);


                Log.d("Ultimele 10 piese: ", json.toString());

                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>();
                            // String href = String.format("<a href=\"%s\"> %s </a>", link, name);
                            // String cici = Html.fromHtml(href).toString();
                            map.put(TAG_NAME, name);
                            map.put(TAG_LINK, "" + Html.fromHtml(link));
                            // map.put(TAG_LINK, link);
                            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);
                    }
                });

            }

        }

}

现在我想弄清楚如何使列表视图中的链接可点击。我正在尝试链接在此处找到的文本视图:

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

            }

R.layout.list_item 是列表视图的不同 .xml 布局。那你们能帮我解决这个问题吗?提前致谢!

4

3 回答 3

2

我觉得不要使用 SimpleAdapter,请扩展 BaseAdapter 并将您正在使用的 textview 设置为 linkify.so 它会自动获得点击。请参考:

Android 开发者博客

于 2012-08-07T11:26:56.630 回答
0

把这一行放到你的 textview

android:autoLink="web"

我希望这能解决你的查询

于 2012-08-07T11:38:47.860 回答
0

我还想在我的列表适配器上创建一个可链接的 textView,所以我使用了:

    Linkify.addLinks(textViewLocationPhone, Linkify.PHONE_NUMBERS);
    textViewLocationPhone.setLinksClickable(true);

它奏效了。

于 2017-07-10T22:54:46.893 回答