2015-09-08 3 views
0

В приведенном ниже коде я делаю строковый массив и разделяю строку, чтобы вырезать идентификаторы. Вместо этого я хочу ассоциативный массив, чтобы я мог выбрать ID элемента из массива. Может кто поможет!Android ListView Идентификатор товара

String[] data={"12__Item 1","14__Item 2","34__Item 3","56__Item 4"}; 
lv = (ListView)findViewById(R.id.leaning_path_list_view); 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.learning_path_single_row,R.id.textView,data); 
    lv.setAdapter(adapter); 


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

      String item =(String)parent.getItemAtPosition(position); 
      String[] parts = item.split("__"); 

      Toast.makeText(getApplicationContext(), 
        "ID: " + parts[0]+" Title: " + parts[1], Toast.LENGTH_LONG) 
        .show(); 


     } 
    }); 
+0

Ваш код не запускает новую деятельность, так как startActivity (i); прокомментировал – Blackbelt

+0

Извините, я уточнил вопрос –

+0

, пожалуйста, отредактируйте свой вопрос, чтобы четко показать, в чем проблема. –

ответ

1

Попробуйте это:

public class YourItem { 

    private String title; 
    private long id; 

    public YourItem(long id, String title){  
     this.setTitle(title); 
     this.setId(id);    
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public long getId() { 
     return id; 
    } 

    public void setId(long id) { 
     this.id = id; 
    } 

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

Вызов адаптера, как это:

YourItem[] data={new YourItem(12,"Item 1"), 
       new YourItem(14,"Item 2") 
       new YourItem(34,"Item 3") 
       new YourItem(56,"Item 4") 
       }; 


ArrayAdapter<YourItem> adapter = new ArrayAdapter<YourItem>(this,R.layout.learning_path_single_row,R.id.textView,data); 

А в вашем Listener сделать что-то вроде этого:

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

     String title= parent.getItemAtPosition(position).getTitle(); 
     long id = parent.getItemAtPosition(position).getId() 

     Toast.makeText(getApplicationContext(), 
       "ID: " + id +" Title: " + title, Toast.LENGTH_LONG) 
       .show(); 


    } 
}); 

Я думаю, что он должен сделай это.

+0

Если это вам помогло, вы должны принять ответ, чтобы все знали, что вы сделали с этим вопросом. благодаря –

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