Android ListView setAdapter проблема - PullRequest
1 голос
/ 06 декабря 2011

Я пытаюсь связать данные, чтобы сделать просмотр списка на Android, но я не могу.

Я видел какой-то код в интернете, и он работал, но я просто не знаю, почему,и я не хочу создавать новый ListView на лету, я хочу использовать тот, который указан в main.xml

Почему я могу это сделать:

ListView lv = new ListView(this);
        lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,PEOPLE));
        setContentView(lv);

Но я не могу сделать это:

ListView listPessoas = (ListView) findViewById(R.id.listPessoas);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.id.listPessoas, PESSOAS);
        listPessoas.setAdapter(adapter);

Ответы [ 4 ]

2 голосов
/ 06 декабря 2011

Ваша ошибка здесь, когда вы создаете новый ArrayAdapter.Вы передаете R.id.listPessoas в качестве представления строки для использования для каждой строки.Это идентификатор ListView.Адаптер ищет идентификатор макета, содержащий текстовое представление, которое будет использоваться для каждой строки списка.Измените R.id.listPessoas на android.R.layout.simple_list_item_1, и ваш код должен работать.Макет simple_list_item_1 - это просто TextView, к которому будут привязаны данные.

2 голосов
/ 18 января 2013

Что такое R.id.pessoas ??

Это прекрасно работает для меня:

String[] x = new String[]{"AAA","BBB","CCC"};
ListView lv = (ListView) findViewById(R.id.listView1);
ArrayAdapter<String> test = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,x);
lv.setAdapter(test);
0 голосов
/ 19 марта 2018

Если вы получаете ошибку.

getApplicationContext ();будет работать вместо «этого».

0 голосов
/ 06 декабря 2011

То, что вы написали, неверно, вторым параметром в конструкторе адаптера массива должен быть простой макет для каждого элемента списка, а не для вашего представления списка.

Если у вас есть собственный сложный макет для вашего спискаэлемент, который вы должны написать собственный адаптер, а также.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...