6

カスタムリストビューがあり、各行の最後にその行をリストから削除するためのImageViewがありますが、この画像をクリックすると、「Arryindesoutofboundexception:length = 681indez=-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

ListViewアイテムが選択されていないにもかかわらず、から選択されたアイテムの位置を取得しようとしています。のドキュメントから、getSelectedItemPosition()アイテムが選択されていない場合、 が返されることがわかりINVALID_POSITIONます-1

于 2013-02-25T04:52:21.757 に答える