App works well until i click on any list item, it crashes.When using search it works well, but when i click it directly on list item app stops.Logcat and and debug shows same problem on line 153.I coomented line 153.First code is CribActivity last one is view activity, i dont know maybe it is somehow related to this error.
@SuppressLint("UseValueOf") public class CribActivity extends Activity {private ListView lv1;private EditText et;private String lv_arr[]={"item 1","item 2","item 67" };private ArrayList<String> array_sort= new ArrayList<String>();int textlength=0;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); lv1 = (ListView) findViewById(R.id.listView); et = (EditText) findViewById(R.id.EditText01); lv1 = (ListView)findViewById(R.id.listView); lv1.setAdapter( new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , lv_arr)); lv1.setTextFilterEnabled(true); et.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void onTextChanged(CharSequence s, int start, int before, int count) { textlength = et.getText().length(); array_sort.clear(); for (int i = 0; i < lv_arr.length; i++) { if (textlength <= lv_arr[i].length()) { if(et.getText().toString().equalsIgnoreCase( (String) lv_arr[i].subSequence(0, textlength))) { array_sort.add(lv_arr[i]); } } } lv1.setAdapter(new ArrayAdapter<String> (CribActivity.this, android.R.layout.simple_list_item_1, array_sort)); } }); lv1.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> a, View v, int position, long id) { String name = array_sort.get(position); //***THIS IS THE LINE 153*** for (int i = 0; i < lv_arr.length; i++) { if (name .equalsIgnoreCase( (String) lv_arr[i])) { position = i; break; } } String itemname = new Integer(position).toString(); Intent intent = new Intent(); intent.setClass(CribActivity.this, ViewActivity.class); Bundle b = new Bundle(); b.putString("defStrID", itemname); intent.putExtras(b); nt startActivity(intent); } });}}
Debug:
E/AndroidRuntime: FATAL EXCEPTION: mainProcess: ru.tablica.sputnikovyh, PID: 24169java.lang.IndexOutOfBoundsException: Index: 1, Size: 0 at java.util.ArrayList.get(ArrayList.java:437) at ru.tablica.sputnikovyh.CribActivity$2.onItemClick(CribActivity.java:153) at android.widget.AdapterView.performItemClick(AdapterView.java:318) at android.widget.AbsListView.performItemClick(AbsListView.java:1159) at android.widget.AbsListView$PerformClick.run(AbsListView.java:3136) at android.widget.AbsListView.onTouchUp(AbsListView.java:4064) at android.widget.AbsListView.onTouchEvent(AbsListView.java:3822) at android.view.View.dispatchTouchEvent(View.java:12513) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3024) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2705) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2719) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:440) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1830) at android.app.Activity.dispatchTouchEvent(Activity.java:3400) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:398) at android.view.View.dispatchPointerEvent(View.java:12752) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5106) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4909) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4479) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4445) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4585) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4453) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4642) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4479) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4445) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4453) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4426) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7092) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7061) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7022) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7195) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:186) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:326) at android.os.Looper.loop(Looper.java:160) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
logcat:
E/eglCodecCommon: GoldfishAddressSpaceHostMemoryAllocator: ioctl_ping failed for device_type=5, ret=-1 E/AndroidRuntime: FATAL EXCEPTION: main java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.get(ArrayList.java:437) at ru.tablica.sputnikovyh.CribActivity$2.onItemClick(CribActivity.java:156) at android.widget.AdapterView.performItemClick(AdapterView.java:318) at android.widget.AbsListView.performItemClick(AbsListView.java:1159) at android.widget.AbsListView$PerformClick.run(AbsListView.java:3136) at android.widget.AbsListView$3.run(AbsListView.java:4052) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
ViewActivity
public class ViewActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.view); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); Bundle bundle = getIntent().getExtras(); String itemname = "n" + bundle.getString("defStrID"); Context context = getBaseContext(); String text = readRawTextFile(context, getResources().getIdentifier(itemname, "raw", "ru.tablica.sputnikovyh")); WebView myWebView = (WebView) findViewById(R.id.webView); String summary = "<!Doctype html><html><head><meta charset=utf-8></head><body>" + text +"</body></html>"; myWebView.loadData(summary, "text/html; charset=utf-8", "utf-8");}public static String readRawTextFile(Context ctx, int resId){ InputStream inputStream = ctx.getResources().openRawResource(resId); InputStreamReader inputreader = new InputStreamReader(inputStream); BufferedReader buffreader = new BufferedReader(inputreader); String line; StringBuilder text = new StringBuilder(); try { while (( line = buffreader.readLine()) != null) { text.append(line); text.append('\n'); } } catch (IOException e) { return null; } return text.toString();}}