Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

listView.getSelectedItemPosition() return index-1

Tags:

android

I have my custom listview and at the end of each row I have ImageView to delete that row from the list but when I click on this image I get "Arryindesoutofboundexception: length=681 indez=-1"

Help me

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


  }
};
like image 723
Nik Avatar asked Feb 25 '13 04:02

Nik


1 Answers

Your item isn't selected because the image intercepts the touch event, therefore the selected position is -1. In order to make this work you need to tell the OnClickListener what item it belongs to:

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();
    }
}
like image 89
Emanuel Moecklin Avatar answered Oct 20 '22 01:10

Emanuel Moecklin