Исключение индекса массива out of bounds: length=1 index=1
Я создал приложение с двумя вкладками , tab1 в качестве отправителя (контент edittext1 и edittext2 используя ввести название и описание ListView в другой вкладке)и tab2 как приемник (содержимого проекта),Моя проблема заключается в получение данных из базы данных и поместить его в элемент управления ListView ' название и описание, разделенных '
это чтение logcat ошибки :
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 at twenty_four.way.com.NoteTaker.FragmentTwo.showData(FragmentTwo.java:54) at twenty_four.way.com.NoteTaker.FragmentTwo.onViewCreated(FragmentTwo.java:47)
и это если DB_Sqlite.Ява :
public boolean insertData(String name, String desc) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("name", name); contentValues.put("desc", desc); long result = db.insert("mytable", null, contentValues); if (result == -1) return false; else return true; } public ArrayList getAllrecord() { ArrayList arrayList = new ArrayList(); SQLiteDatabase db = this.getReadableDatabase(); Cursor res = db.rawQuery("select * from mytable", null); res.moveToFirst(); while (res.isAfterLast() == false) { String t2 = res.getString(1); String t3 = res.getString(2); arrayList.add(t2); res.moveToNext(); } return arrayList; } }
а это если FragmentTwo.java :
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); db=new DB_Sqllite(getActivity()); listView = (ListView) view.findViewById(R.id.list_view); //here we need to pass Context and arraylist adapter = new MessageAdapter(getActivity(), arrayList); listView.setAdapter(adapter); showData(); } public void showData() { ArrayList<String> listData = db.getAllrecord(); ArrayList<MessageModel> arrayList = new ArrayList<>(); for (int i=0; i<listData.size()-1; i++) { String Name = listData.get(i).split(" - ")[0];; String Desc =listData.get(i).split(" - ")[1]; MessageModel messageModel = new MessageModel(); messageModel.setTitle(Name); // messageModel.setDesc(Desc); messageModel.setPrio(true,false); arrayList.add(0,messageModel); } MessageAdapter adapter; adapter = new MessageAdapter(getActivity(), arrayList); listView.setAdapter(adapter); } public void displayReceivedData(MessageModel messageModel) { arrayList.add(0, messageModel); adapter.notifyDataSetChanged(); }
Что я уже пробовал:
удалить
MessageAdapter adapter; adapter = new MessageAdapter(getActivity(), arrayList); listView.setAdapter(adapter);
ZurdoDev
Ошибки ArrayIndexOutOfBoundsException очень просты. Вы пытаетесь получить доступ к элементу массива, который не существует. Все, что вам нужно сделать, это отладить свой код и выяснить, почему. Очень просто.
David Crow
Я ничего такого не вижу try/catch
блоки в вашем коде. Это намеренно?
Что находится в строке 54 из FragmentTwo.java-что? Это было бы то, что бросает ArrayIndexOutOfBoundsException
.
Вы прошли через код с помощью отладчика? Если нет, то почему?
Не видя фактических данных в моей таблице, я могу только догадываться, что именно помещается в нее. ArrayList
объект не соответствует тому, что из него вытягивается.