Так что в основном для моего школьного проекта я должен иметь возможность анализировать близлежащие устройства с помощью 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");
Я что-то не так делаю?




Во-первых, вы использовали неправильный конструктор.
Использовать
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);
Рад, что смог помочь. :)