Сбой приложения при добавлении объекта в ArrayAdapter

Так что в основном для моего школьного проекта я должен иметь возможность анализировать близлежащие устройства с помощью Bluetooth, и я решил отображать их с помощью ListView, для чего мне нужно заполнить ArrayAdapter хотя бы именами.

Дело в том, что по какой-то причине мое приложение вылетает каждый раз, когда я пытаюсь сделать что-нибудь, связанное с ArrayAdapter.

Учитывая, какая это была катастрофа, я сделал очень простой код:

package z.ut010;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity {

String[] myStringTab = {"String01", "String02", "String03", "String04", "String05"};
ArrayAdapter <String> myArrayAdapter;
ListView myListView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    myListView = (ListView) findViewById(R.id.LV);

    myArrayAdapter = new ArrayAdapter <> (MainActivity.this, android.R.layout.simple_list_item_1, myStringTab.length);
    myArrayAdapter.add("String06");

    myListView.setAdapter(myArrayAdapter);
   }
}

Я сделал только ListView в своем приложении для этого кода:

<?xml version = "1.0" encoding = "utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:tools = "http://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
tools:context = ".MainActivity">

<ListView
    android:id = "@+id/LV"
    android:layout_width = "500dp"
    android:layout_height = "800dp"
    android:layout_marginStart = "16dp"
    android:layout_marginTop = "16dp"
    app:layout_constraintStart_toStartOf = "parent"
    app:layout_constraintTop_toTopOf = "parent" />
</android.support.const

К сожалению, это вообще не сработало, и даже с этим мое приложение вылетает на

myArrayAdapter.add("String06");

Я что-то не так делаю?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Во-первых, вы использовали неправильный конструктор.

Использовать

ArrayAdapter(Context context, int resource, T[] objects)

или же

ArrayAdapter(Context context, int resource, List<T> objects)

Во-вторых, если вы пытаетесь добавить что-то в ArrayAdapter, вы не можете передать массив. Вы должны передать изменяемый список, например ArrayList.

Итак, в вашем случае поместите все свои строки в ArrayList, а затем передайте их в конструктор.

myArrayAdapter = new ArrayAdapter <> (MainActivity.this,
        android.R.layout.simple_list_item_1, myStringTabArrayList);

Рад, что смог помочь. :)

Nabin Bhandari 20.04.2018 21:06

Другие вопросы по теме