2013-02-25 2 views
4

У меня есть собственное пользовательское listview, и в конце каждой строки у меня есть ImageView, чтобы удалить эту строку из списка, но когда я нажимаю на это изображение, я получаю «Arryindesoutofboundexception: length = 681 indez = -1"listView.getSelectedItemPosition() return index-1

Помогите мне

private OnClickListener imageviewClickListener = new OnClickListener() { 
    @Override 
    public void onClick(View v) 
    { 
     int index; 
     index=listView.getSelectedItemPosition();//itemsListView is the listview 
     dataAdapter.remove(topicsList.get(index)); 
     topicsList.clear(); 
     dataAdapter.notifyDataSetChanged(); 


    } 
}; 
+0

Прочитайте это: http://stackoverflow.com/questions/10723685/getselecteditemposition-always-return-1 – Barney

ответ

4

Ваш товар не выбран, так как изображение перехватывает событие касания, поэтому выбранное положение равно -1. Для того, чтобы сделать эту работу, Вы должны сказать OnClickListener какой элемент принадлежит:

private static class MyClickListener implements OnClickListener { 
    private final int mIndex; 

    private MyClickListener (int index) { 
     mIndex = index; 
    } 

    @Override 
    public void onClick(View v) { 
     dataAdapter.remove(topicsList.get(mIndex)); 
     topicsList.clear(); 
     dataAdapter.notifyDataSetChanged(); 
    } 
} 
+0

Спасибо ......:-) Теперь работает – Nik

1

Вы пытаетесь получить позицию в выбранной позиции из ListView, несмотря на то, что не было выделено ни одного элемента. Из документов getSelectedItemPosition() вы можете видеть, что если ни один элемент не выбран, он возвращает INVALID_POSITION, который равен -1.

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