Member 13366692 Ответов: 1

Исключение индекса массива 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 объект не соответствует тому, что из него вытягивается.

1 Ответов

Рейтинг:
2

Patrice T

Цитата:
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
at twenty_four.way.com.NoteTaker.FragmentTwo.showData(FragmentTwo.java:54)

Сообщение об ошибке говорит вам, что вы пытаетесь получить доступ к элементу номер 1, который является вторым элементом в массиве, содержащем только один элемент.
Вам также дается 54, номер строки в исходном коде.
Вы не можете получить дополнительную помощь, потому что мы не знаем, что такое строка 54 в вашем исходном коде.