6

我有我的自定义列表视图,并且在每一行的末尾我有 ImageView 从列表中删除该行但是当我单击此图像时,我得到“Arryindesoutofboundexception:长度 = 681 indez = -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();


  }
};
4

2 回答 2

5

您的项目未被选中,因为图像拦截了触摸事件,因此所选位置为-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();
    }
}
于 2013-02-25T04:55:43.717 回答
1

您正在尝试从 a 获取所选项目的位置ListView,即使没有选择项目。从 的文档中getSelectedItemPosition(),您可以看到,如果未选择任何项目,则返回INVALID_POSITION,即-1

于 2013-02-25T04:52:21.757 回答