0

我得到一个 JSON 数据,其中包含例如新闻标题和实际网站中新闻的 url 地址。

我正在使用 ListView 来显示标题。但是我该如何做到这一点,当点击每个项目时,它会在 Android 浏览器中打开相应的链接。下面是我的代码片段:

     String title = c.getString(TAG_TITLE);
     String link = c.getString(TAG_ALTERNATE);
    list.add(title);
                   
     final StableArrayAdapter adapter = new StableArrayAdapter(this,
     android.R.layout.simple_list_item_1, list);
     listview.setAdapter(adapter);

    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    
   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(link));
    startActivity(browserIntent);   
  }
});

问题是当我单击它仅从 1 个链接加载页面的项目时。单击时所有项目都转到同一页面。

知道我哪里出错了吗?如何使每个项目在单击时都转到其各自的链接?

4

5 回答 5

2

在解析 json 的时候把对应的链接放到一个列表中。

List<String> listLink= new ArrayList<String>


listLink.add(link);

在创建 Intent 时设置标题的对应OnItemClickListner链接ListView。IE

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(listLink.get(arg2)));
    startActivity(browserIntent);   
  }
});
于 2013-08-13T08:08:21.053 回答
2

我认为你应该把标题和链接做成一个javabean,这样当你点击一个项目时,你可以使用javabean并获取链接,最后你会链接到不同的网站。

于 2013-08-13T08:10:59.937 回答
1
lv.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub

                    Toast.makeText(getBaseContext(),s[arg2], Toast.LENGTH_LONG).show();

                    if(s[arg2].equals("Facebook"))
                    {
                        startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.facebook.com")));
                    }
                    else if(s[arg2].equals("Twitter"))
                    {
                        startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.twitter.com")));
                    }


                    else
                    {
                                             //Message here
                    }
                }
            });
于 2013-08-13T08:06:13.387 回答
1

或许

Intent browserIntent = new Intent(Intent.ACTION_VIEW, 

Uri.parse(adapter.getItem(arg2).toString()); 
startActivity(browserIntent);

或类似的东西。

但是,为了理解:

您获得 1 个链接,因为在 2 种情况下您获得 1 个值。这很简单。享受!:)

于 2013-08-13T08:29:36.573 回答
0

好的,我知道了。我声明了另一个列表并从该列表中获取链接。下面是代码:

 list.add(title);
 linklist.add(link);

 final StableArrayAdapter adapter = new StableArrayAdapter(this,android.R.layout.simple_list_item_1, list);
listview.setAdapter(adapter);

 listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(linklist.get(arg2).toString()));
startActivity(browserIntent);       
}
});
于 2013-08-13T08:11:08.773 回答