2016-10-31 16 views
-3

我遇到了一個Onclick事件問題,它一直給我一個Out Of Bounds Exception。我在名單上基本上有30個汽車名稱列表,當有人點擊汽車名稱時,旁邊會出現一個複選標記。當有人再次點擊它,我做了對號dissapear這通常是當我得到一個出界異常..這是我的代碼Java android索引超出綁定異常點擊事件

private ArrayList<Integer> selected_positions= new ArrayList<>(); 
binding.list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View view, int position, long id) { 


         if(selected_positions.contains(position)) { 
          // Position is already CheckMarked so remove 
          selected_positions.remove(position); 
         } else { 
          // Position Clicked for the 1st time 
         selected_positions.add(position); 
        } 



      final FilterCarsAdapter FS = new FilterCarsAdapter(getActivity(), binding,selected_positions); 
      binding.list.setAdapter(FS); 


     } 
    }); 

我基本上保持在單擊Selected_Positions的ArrayList中的值按位置。問題是,例如點擊總是工作,如果我點擊索引2中的項目,然後勾選出現,但如果我再次單擊它將其刪除,我得到java.lang.IndexOutOfBoundsException:索引2無效,大小爲1,如果我位置5然後我得到java.lang.IndexOutOfBoundsException:索引5無效,大小爲1。任何幫助都會很棒,因爲我是Java新手。

+2

您是否嘗試過調試它? – Carcigenicate

回答

2

問題是,當你使用selected_positions.remove(position);它試圖找到並刪除整數position位置編號。

您需要:selected_positions.remove((Integer)position);

+0

非常感謝,這正是我們所需要的。 –