使Android列表项可单击,每个项指向不同的链接

时间:2013-08-13 07:55:33

标签: android

我正在获取一个JSON数据,其中包含新闻标题和实际网站中新闻的网址。

我正在使用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个链接加载页面。点击后的所有项目都会转到同一页面。

知道我哪里出错了吗?如何以这样一种方式制作它,使点击后的每个项目都会转到它的相应链接?

提前致谢

5 个答案:

答案 0 :(得分:2)

在解析json时将相应的链接放在列表中。

List<String> listLink= new ArrayList<String>


listLink.add(link);

OnItemClickListner ListView中创建意图时设置标题的交叉链接。即。

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

答案 1 :(得分:2)

我认为你应该制作标题并链接到javabean,所以当你点击一个项目时,你可以使用javabean并获取链接,最后,你将链接到不同的网站。

答案 2 :(得分: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
                    }
                }
            });

答案 3 :(得分:1)

可能是

Intent browserIntent = new Intent(Intent.ACTION_VIEW, 

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

或类似的东西。

但是,为了理解:

你得到1个链接,因为在2个案例中你得到1个值。这很简单。享受!)

答案 4 :(得分: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);       
}
});