Изменить эту строку:
ArrayAdapter<List> itemsAdapter = new ArrayAdapter<List>(this, R.layout.textview, contacts);
к этому:
ArrayAdapter<Bundle> itemsAdapter = new ArrayAdapter<Bundle>(this, R.layout.textview, contacts);
Для ArrayAdapter
тип, который вы помещаете между <>, является типом, который используется для вашего массива.
В этом случае ваш List
на самом деле является списком Связок, что означает, что contacts это просто список типа Bundle
.
Следовательно, тип, который вы помещаете в <>, должен иметь тип Bundle
, чтобы соответствовать типу вашего списка контактов.
Причина, по которой вы получили эту ошибку конструктора, заключается в том, что вы написали ArrayAdapter<List>
, поэтому конструктор ожидал, что contacts будет Array
или List
типа List
.
Еще одна вещь, которую стоит отметить ...
Ваш ArrayAdapter, вероятно, не даст ожидаемого результата, потому что он не знает, что делать с Bundle
.
Если бы это был просто список String
, то он будет знать, отображать это в макете R.layout.textview
, но для типа Bundle
он просто не будет знать, что вы хотите с ним делать если вы не создадите пользовательский адаптер для обработки этого типа.
Таким образом, вы можете создать собственный адаптер, который позволит вашему ListView знать, как отображать содержимое вашего Bundle, или , если ваша информация достаточно проста, , как одна строка , затем вы можете создать новый список, который содержит только эту простую строку и передать ее конструктору для ArrayAdapter.