디버깅 한 결과
로그켓은
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.lg.jangttok4application, PID: 18613
java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at com.example.lg.jangttok4application.ListActivity$2.onClick(ListActivity.java:93)
at android.view.View.performClick(View.java:4633)
at android.view.View$PerformClick.run(View.java:19270)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5602)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
이런 오류가 납니다.
버튼클릭을 하면 다른 엑티비티로 넘어가는 과정입니다.
넘겨주는 String 값과 함께 넘어가서 웹뷰를 실행시켜 String 값을 사용하는 부분 인데 코딩도 올리겠습니다.
//터치한 리스트의 값을 하나씩 저장하는 배열
final ArrayList<String> brigde = new ArrayList<String>();
//adapter 생성
final ItemListAdatper adapter = new ItemListAdatper();
//리스트뷰 참조 및 Adapter 담기
final ListView listview = (ListView) findViewById(R.id.listView);
listview.setAdapter(adapter);
//리스트뷰에 보여질 아이템들 추가
adapter.addItem("김치" , "17-3-10", "17-3-17", "D-7");
adapter.addItem("우유" , "17-3-10", "17-3-24", "D-14");
adapter.addItem("케찹" , "17-3-10", "18-3-9", "D-365");
adapter.addItem("계란" , "17-3-1", "17-3-24", "D-23");
//위에서 생성한 listview에 클릭 이벤트 핸들러 정의
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View v, int position, long id) {
//get item
Items item = (Items) parent.getItemAtPosition(position);
//가져온 item_name을 변수 name에 저장
//String name = item.getItem_name();
brigde.add(item.getItem_name());//가져온 item_name을 ArrayList에 저장
//여기에 단어 검색 구현 name 정보가지고
//Toast.makeText(ListActivity.this, name, Toast.LENGTH_SHORT).show();//토스트로 출력시킴
}
});
Button searchbtn = (Button) findViewById(R.id.searchbtn);
searchbtn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
SparseBooleanArray checkedItems = listview.getCheckedItemPositions();
ArrayList<String> temp = new ArrayList<String>();//배열 brigde에 저장된 값들중 체크된 값들만 저장하는 배열
int count = adapter.getCount();//리스트에 보여지는 목록들의 개수
String address = "https://search.naver.com/search.naver?where=post&sm=tab_jum&ie=utf8&query=";//검색할 사이트 주소 저장
for (int i = 0; i < count; i++) {
if (checkedItems.get(i) == true && brigde.get(i) != null) {
temp.add(brigde.get(i));//체크된 값들만 찾아 새로운 배열에 삽입
}
}
for(int i = 0 ; i < temp.size() ; i++){
address = address + "+" + temp.get(i);
}
address = address + "+" + "레시피";//사이트 주소 + 재료명 + 레시피 의 형태를 다시 저장함.
Intent intent = new Intent(ListActivity.this, WebSearchActivity.class);
intent.putExtra("address", address);//아이템의 값들중 address의 정보를 WebSearch 액티비티로 넘김
startActivity(intent);//intent 시작
listview.clearChoices() ;
adapter.notifyDataSetChanged();
}
});