2012-06-28 5 views
3

У меня есть пользовательский адаптер для моего ListView, который имеет несколько TextView. Я хочу установить onItemClickListener в свой ListView и извлечь текст из TextViews. Я попытался использовать это:Как получить идентификатор TextView из пользовательского адаптера

String s =(String) ((TextView) mListView.findViewById(R.id.myNr)).getText(); 

, но по умолчанию он всегда возвращает значения из первого элемента списка! (Я думаю, потому что она не определяет идентификатор товара из списка)

Я также попытался это:

String s = (((TextView) mListView.getItemAtPosition(myItemInt)). 
          findViewById(R.id.myNr)).toString(); 

не работает! Какие-либо предложения?

Это реализуется в рамках следующей функции:

mListView.setOnItemClickListener(new OnItemClickListener() { 
       public void onItemClick(AdapterView<?> myAdapter, View myView, 
         int myItemInt, long mylng) { 

      // String s statements 

} 

EDIT:

Вот полный код:

mListView_myentries.setOnItemClickListener(new OnItemClickListener() { 
       public void onItemClick(AdapterView<?> myAdapter, View myView, 
         int myItemInt, long mylng) { 

        String workRequestSelected = (String) ((TextView) mListView_myentries.findViewById(R.id.work_request)).getText(); 
        String activitySelected = (String) ((TextView) mListView_myentries.findViewById(R.id.activity)).getText(); 
        String statusSelected = (String) ((TextView) mListView_myentries.findViewById(R.id.status)).getText(); 
        String workRequestDescSelected = (String) ((TextView) mListView_myentries.findViewById(R.id.desc)).getText(); 
        String actualHoursString = (String) ((TextView) mListView_myentries.findViewById(R.id.actual_hours)).getText(); 

} 
+0

Не положительны об этом, но если вы даете каждое отдельное TextView в ListView «ид», вы можете позвонить, что из вашего кода. – JuiCe

+0

@ Харш вы решили свою проблему? – rajpara

+0

Нет. Как я уже говорил, он всегда возвращает значения из первого элемента в списке. – Harsh

ответ

3

Попробуйте код ниже

mListView.setOnItemClickListener(new OnItemClickListener() { 
public void onItemClick(AdapterView<?> myAdapter, View myView,int myItemInt, long mylng) { 
      String s =(String) ((TextView) myView.findViewById(R.id.myNr)).getText(); 
    } 
} 
+0

Это именно то, что я делал раньше. Он всегда получает значения первого элемента списка. – Harsh

+0

вы можете разместить свой класс адаптера здесь – rajpara

+0

Я просто сделал. Пожалуйста, посмотрите – Harsh

0

Это работало идеально для меня, однако, когда я называл свой списокContacts (listview) напрямую, он всегда давал мне первую запись, но когда я назвал представление, переданное мне, это работало как шарм.

public void onItemClick(AdapterView<?> parent, View view, int position, 
     long id) { 
    String item = (((TextView)view.findViewById(R.id.txtVwConID)).getText().toString()); 
    Toast.makeText(getApplicationContext(), "you selected: " + item, Toast.LENGTH_SHORT).show(); 

Если у вас есть вопрос о моей коде больного посте более здесь