2014-01-26 6 views
3

Я использую listview в android. Раньше я использовал для извлечения данных из базы данных, поэтому использовал CursorAdapter, но теперь я получаю ответ от веб-сайта и на веб-сайте. У меня разные ссылки, и у каждой ссылки есть свое имя, связанное с ней. У меня есть имена и ссылки в двух массивах строки. Я должен показывать только имена, и при каждом нажатии каждое имя откроет одно и то же новое намерение со ссылкой как параметр.Просмотр списка Android с дополнительными скрытыми полями

Вот что я делаю

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

     }); 
    } 

ответ

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

You затем может использовать Data в OnItemClickListener:

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

Спасибо, у меня тоже была эта идея, но я не был уверен, что будет отображаться переменная listview и которая скроется. Именно поэтому вы переопределили функцию toString? – Hamza

+0

@Hamza Да, по умолчанию, 'ArrayAdapter' вызовет метод' toString() 'для объекта данных и использует результирующую String, чтобы отобразить его в макете строк. – Luksprog

Смежные вопросы