2013-10-15 6 views
1

Я установил listview и прослушиватель onclick из примера, который я нашел. Код строит отлично и работает. Номер позиции «Позиция» верен в сообщении «Тост» при нажатии, но в тексте всегда отображается «Яблоко», которое является первой строкой в ​​массиве. Я думаю, что String text = listText.getText(). ToString(); линия является проблемой, но все попытки не исправить неполадкуList View on the click listener всегда возвращает Apple

 public class ElsEditTitles extends Activity { 

String[] StrLabels = new String[16]; // Store Label names to string 
String StrFile; 
ListView TitleslistView; 
Context context; 
ListView listView; 

static final String[] FRUITS = new String[] { "Apple", "Avocado", "Banana", 
     "Blueberry", "Coconut", "Durian" }; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.els_edit_titles); 
    context = this; 

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

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      R.layout.list_view_row, R.id.listText, FRUITS); 

    listView.setAdapter(adapter); 
    listView.setOnItemClickListener(new ListClickhandler()); 

} 

private class ListClickhandler implements OnItemClickListener { 

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

     TextView listText = (TextView) findViewById(R.id.listText); 
     String text = listText.getText().toString(); 
     Toast.makeText(context, text + " " + position, Toast.LENGTH_LONG) 
       .show(); 

    } 

} 

els_edit_tiles.xml

 <?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<ListView 
    android:id="@+id/listView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 
</ListView> 

list_view_row.xml

 <?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<TextView 
    android:id="@+id/listText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Large Text" 
    android:textSize="30dp" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

    </LinearLayout> 

Я редактировал строку, добавив Просмотрите и решите проблему. Благодаря prijupaul и Иган

   TextView listText = (TextView) view.findViewById(R.id.listText); 
+0

попробуйте адаптор [положение] не позиция только –

ответ

0

Вы должны получить доступ к элементу массива для position в onItemClickListener. Или вы также можете попробовать изменить findViewById на view.findViewById(), чтобы получить правильный элемент списка.

TextView listText = (TextView) view.findViewById(R.id.listText); String text = listText.getText().toString(); Toast.makeText(context, text + " " + position, Toast.LENGTH_LONG) .show();

0

Попробуйте найти вид по идентификатору от входящего зрения на метод onItemClick: TextView listText = (TextView) view.findViewById (R.id.listText);

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