2016-10-12 3 views
0

Я хочу создать простой список элементов (имен в этом случае) в приложении. Я использую Android Studio, и насколько я знаю, я написал все правильно, и я не знаю, где я ошибся. Вот мой XML файл:Почему мой список не заполняется в Android Studio?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.scott.exampleapp.test_page"> 

    <ListView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/list_view" 
     android:layout_centerVertical="true" 
     android:layout_alignParentStart="true" /> 
</RelativeLayout> 

И мой соответствующий Java файл:

package com.example.scott.exampleapp; 

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

public class test_page extends AppCompatActivity { 

    String[] exampleArray = new String[]{"Scott", "Steffi", "Liam", "Jonny", "Zac"}; 

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

     ListView listView = (ListView) findViewById(R.id.list_view); 

     ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.activity_test_page, exampleArray); 

     listView.setAdapter(adapter); 
    } 
} 
+2

использование 'android.R.layout .simple_list_item_1' вместо 'R.layout.activity_test_page' внутри' ArrayAdapter() ' –

ответ

3

ваш проезжают неправильный макет в адаптер, он должен быть inbuild simple_list_item_1 макет.

использование этого

ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, exampleArray); 

здесь new ArrayAdapter<String>(this, R.layout.activity_test_page, exampleArray); вы используете макет деятельности, но адаптер использует свой собственный макет для заполнения listitems соответствующим образом либо вы можете использовать inbuild макет или вы также можете создать отдельные один (дополнительные кодирование + дополнительная красота)

плюс вы не должны делать это

String[] exampleArray = new String[]{"Scott", "Steffi", "Liam", "Jonny", "Zac"}; 

вы можете использовать этот ум Хет new String[] в момент декларации с инициализацией

String[] exampleArray = {"Scott", "Steffi", "Liam", "Jonny", "Zac"}; 
+0

Хм, я попробовал, и это дает мне Ошибка «Не удалось разрешить символ». Что это значит? –

+0

@Yoman, символ которого? , отправить полную ошибку и получить результат в секундах –

+0

Точные слова ошибки: «Не удается разрешить символ« simple_list_item_1 ».» –

3

Вы не можете использовать макет деятельности в качестве макета элемента списка либо вы должны создать новый макет элемента списка или используйте значение по умолчанию android.R.layout.simple_list_item_1 для ArrayAdapter:

ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, exampleArray); 
0

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

Создайте макет с текстовым видом, например.

0

Как вы можете прочитать в official doc

Второй параметр, используемый в конструкторе:

ресурс INT: Идентификатор ресурса для файла макета, содержащего TextView использовать при инстанцировании взглядов.

Используйте макет элемента вместо R.layout.activity_test_page

Что-то вроде:

ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, exampleArray); 

или если вы хотите использовать пользовательский макет:

ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.my_item_layout, exampleArray); 
Смежные вопросы