安卓列表视图带有额外的隐藏字段

4

我正在使用Android中的listview。 以前,我从数据库中提取数据,所以我使用了CursorAdapter,但现在我要从网站获取响应,并且在网站上,我有不同的链接,每个链接都有与之相关的名称。 我在两个字符串数组中拥有名称和链接。 我只需要显示名称,并在单击每个名称时打开具有链接参数的相同新意图。

这是我正在做的事情

listView = (ListView) findViewById(R.id.list);


String[] names= new String[] { "name1", 
                               "name2"
                             };
String[] links= new String[] { "link1", 
                               "link2"
                             };

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
  android.R.layout.simple_list_item_1, android.R.id.text1, send names and links);

            listView.setAdapter(adapter); 

        listView.setOnItemClickListener(new OnItemClickListener() {

              @Override
              public void onItemClick(AdapterView<?> parent, View view,
                 int position, long id) {

               String  itemValue    = (String) listView.getItemAtPosition(position);
               Intent myIntent = new Intent(arg0.getContext(), NewPage.class);          
            myIntent.putExtra("Url",how to get this);               
            startActivity(myIntent);
              }

         }); 
    }
1个回答

7

将这两个信息放入自定义对象中:

class Data {
   String name;
   String link;

   @Override
   public String toString() {
       return name;
   }
}

构建数据项列表:

String[] names= new String[] { "name1", 
                               "name2"
                             };
String[] links= new String[] { "link1", 
                               "link2"
                             };
List<Data> output = new ArrayList<Data>();
for (int i = 0; i < names.length; i++) {
     Data d = new Data();
     d.name = names[i];
     d.link = links[i]
     output.add(d);
}
ArrayAdapter<Data> adapter = new ArrayAdapter<Data>(this,
  android.R.layout.simple_list_item_1, android.R.id.text1, output);

您可以在 OnItemClickListener 中使用 Data

Data  item = (Data) listView.getItemAtPosition(position);
Intent myIntent = new Intent(arg0.getContext(), NewPage.class);          
myIntent.putExtra("Url", d.link);               
startActivity(myIntent);

谢谢,伙计。我也有这个想法,但我不确定listview将显示哪个变量列表,哪个变量列表将被隐藏。这就是你为什么要重写toString函数的原因吗? - Hamza
@Hamza 是的,默认情况下,ArrayAdapter 会调用数据对象上的 toString() 方法,并使用生成的字符串在行布局中显示它。 - user

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接