메인 보시면 OnitemLongClick()이 메소드가 삭제하는 메소드인데 .notifyDataSetInvalidated() 요게 실행이 안되는 것 같아요 삭제할려고 누르면 어플이 꺼지고 java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 요 에러가 뜨는데 배열인덱스 문제인 건 알겠고 먼저 아이템을 지워서 아이템이 없기 때문에 그런 것 같은데 이거 어떻게 해결을 하면 될까여 ???
public class MainActivity extends AppCompatActivity implements Adapter.ListBtnClickListener , AdapterView.OnItemLongClickListener{
final int INTENT_REQUEST = 1;//인텐트(option 신호값)
private ListView m_oListView = null;//리스트뷰를 넣기 위한 변수
private ArrayList<item> list_item = new ArrayList<>();//item 배열
item item_list;
Adapter oAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1 = (Button) findViewById(R.id.btn1);//버튼
View sss = getLayoutInflater().inflate(R.layout.list_item, null, false);
ImageButton img = sss.findViewById(R.id.imb2);
btn1.setOnClickListener(new View.OnClickListener() {//+버튼클릭 리스너
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), option.class);//클릭하면 옵션 액티비티로 넘어감
startActivityForResult(intent, INTENT_REQUEST);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {//옵션 액티비티 결과 수신
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == INTENT_REQUEST && resultCode == AppCompatActivity.RESULT_OK) {//신호가 ok이고 인텐트 번호가 맞다면
String name = data.getStringExtra("name");//이름 번호 가져오기
String number = data.getStringExtra("phone");
item_list = new item();
item_list.name = name;
item_list.number = number;
list_item.add(item_list);
//가져온 이름 번호를 아이템객체에 넣기
}
oAdapter = new Adapter(list_item, getApplication(), this, R.layout.list_item);//어댑터 객체 생성
m_oListView = (ListView) findViewById(R.id.list);//리스트뷰 연결
m_oListView.setAdapter(oAdapter);//어댑터 장착
m_oListView.setOnItemLongClickListener(this);
}
@Override
public void onListBtnClick(int i) {
}
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {//길게 클릭하면 삭제하는 버튼
list_item.remove(i);
oAdapter.notifyDataSetInvalidated();
return false;
}
}