Я пытаюсь установить ListView, и я смог сделать это, используя простой массив String [], как вы можете видеть в коде.Проблемы с ListView, используя список вместо массива
Позже я закомментирована массива и использовать список
Моя проблема начинается, когда я хочу использовать список (так как мне нужно, чтобы управлять содержимым) и простой массив не может динамически изменяться. Когда я использую List, я получаю исключение NullPointerException, когда создаю ArrayAdapter, и я не знаю почему.
Я прочитал в документации ArrayAdapter, что она перегружена с 6 различными конструкторами и один из них является
ArrayAdapter (Context контекст, внутр ресурс, Список объектов)
Почему я получаю NullPointerException ?
Что мне делать, чтобы заставить его работать со списком вместо массива?
Заранее благодарен!
public class MainActivity extends Activity implements OnItemClickListener {
ListView l;
// String[] days = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
List<String> days;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
days.add(0, "Sunday");
days.add(1, "Monday");
days.add(2, "Tuesday");
days.add(3, "Wednesday");
days.add(4, "Thursday");
days.add(5, "Friday");
days.add(6, "Saturday");
l = (ListView) findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, days);
l.setAdapter(adapter);
l.setOnItemClickListener(this);
}
@Override
public void onItemClick(
AdapterView<?> adapterView, // ListView that was clicked
View view, // Reference to the row that was clicked (each row is a TextView)
int i, // position
long l) { // id of the TextView that was clicked
Toast.makeText(this, days.get(i) + " " + i, Toast.LENGTH_LONG).show();
}
}
Это сделало, спасибо! – user2566468
Крис, о том, что я не использую номера индексов, на самом деле я использую две разные коллекции в своем приложении, и они ссылаются на каждый номер, используя номер индекса. Если я использую ArrayList, это гарантировано (если я не использую индексный номер), что они будут находиться в одной позиции? Другими словами: гарантировано ли, что индекс будет таким же, как и порядок, который был введен в список? – user2566468
Да, 'add' без индекса всегда будет добавляться в конец списка. –