Hi, When I try to remove the list element in my ArrayLilst I get IndexOutofBoundsException. Specifically in OnItemLongClickListener.
Can anyone help ? Thanks, Graham package listmodified.org; import java.util.Arrays; import java.util.ArrayList; import android.app.ListActivity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.AdapterView.OnItemLongClickListener; import android.view.GestureDetector.OnGestureListener; import android.view.GestureDetector; import android.view.MotionEvent; import android.widget.Toast; public class listmodified extends ListActivity implements OnGestureListener { public ArrayList<String> myList = new ArrayList<String>(Arrays.asList(items)); private TextView selection; // MAIN.xml public ArrayAdapter<String> adapter; // my adapter public OnItemLongClickListener itemDelListener; private GestureDetector gestureScanner; public int longClickedItem = 0; //check if longClick is selected or not private String itemSelected; // for delete function private static final byte UPDATE_LIST = 100; public AdapterView<?> parent; //used by OnLitemLongClickListener public int position; //tie items to an array list called myList public static String[] items={"lorem", "ipsum", "dolor", "sit", "amet", "consectetuer", "adipiscing", "elit", "morbi", "vel", "ligula", "vitae", "arcu", "aliquet", "mollis", "etiam", "vel", "erat", "placerat", "ante", "porttitor", "sodales", "pellentesque", "augue", "purus"}; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); //PART OF AdapterView.OnItemClickListener //PASS TO listener and catching the selection changes OnItemLongClickListener itemDelListener = new OnItemLongClickListener(){ //@Override public boolean onItemLongClick(AdapterView<?> parent, View arg1, int position, long arg3) { // TODO Auto-generated method stub itemSelected=parent.getItemAtPosition(position).toString(); adapter.remove(itemSelected); Toast.makeText(listmodified.this, "position is:" + position, Toast.LENGTH_SHORT).show(); myList.remove(position); adapter.notifyDataSetChanged(); return false; }}; setContentView(R.layout.main); //DEFINE MY OWN VIEW TIEW TO ARRAYLIST myList WHICH CONTAINS STRINGS adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,myList); setListAdapter(adapter); //A VIEW OF THE LIST NECESSARY FOR DELETION selection=(TextView)findViewById(R.id.selection); // PART OF LONG CLICK SELECTED CODE // CALLS IMPLEMENTED METHODS - detect gestures checking my list items gestureScanner = new GestureDetector(this); getListView().setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return gestureScanner.onTouchEvent(event); } }); //UPDATE VIEW DELETE WHEN ONLONG CLICK IS PRESSED getListView().setOnItemLongClickListener(itemDelListener); } //LIST ITEM PRESS CHECKING public void onListItemClick(ListView parent, View v, int position, long id){ selection.setText(myList.get(position)); //check to see if LONGCLICK IS PRESSED if (longClickedItem != -1) { Toast.makeText(listmodified.this, "A short click detected", Toast.LENGTH_SHORT).show(); } longClickedItem=0; } //IMPLEMENTED BY GESTURE @Override public boolean onDown(MotionEvent arg0) { // TODO Auto-generated method stub return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // TODO Auto-generated method stub return false; } //CHECKS ONLONGPRESS EVENTS SET LONG PRESS TO -1, //COOL I CAN USE THIS TO SEE IF A LONG CLICK WAS SELECTED LATER ON @Override public void onLongPress(MotionEvent e) { // TODO Auto-generated method stub Toast.makeText(listmodified.this, "A long click detected", Toast.LENGTH_SHORT).show(); if (e.getAction()==MotionEvent.ACTION_DOWN) { longClickedItem = -1; } } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // TODO Auto-generated method stub return false; } @Override public void onShowPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub return false; } private Handler updateListHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case UPDATE_LIST: int position = msg.arg1; myList.remove(position); adapter.notifyDataSetChanged(); Toast.makeText(listmodified.this, "OnSingleTapUp", Toast.LENGTH_SHORT).show(); break; } ; }; }; } -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en