2013-07-24 2 views
0

Привет всем Я новичок в программировании на Android. Я пытаюсь заполнить ListView через Array Adapter. После запуска ошибка: К сожалению, приложение остановлено. Я не знаю, что происходит неправильно. Я пропустил код без setAdapter, и он работал нормально. Вот мой кодЗаполнение ListView с использованием ArrayAdapter, приложение остановлено

Layout File: 1. activity_main.xml

<LinearLayout 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=".MainActivity" 
android:orientation="vertical"> 


<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

     <EditText android:id="@+id/emp_name" 
     android:layout_weight="1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:hint="@string/emp_name" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/button_search" 
      android:clickable="true" 
      android:onClick="search" /> 
    </LinearLayout> 

<ListView 
    android:id="@+id/emp_list" 
    android:layout_width="75dp" 
    android:layout_height="fill_parent" > 
</ListView> 

</LinearLayout> 

2.emp_list_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/emp_item" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 
</TextView> 
  1. Main_activity.java

    protected void onCreate(Bundle savedInstanceState){ 
    
        super.onCreate(savedInstanceState); 
    
        String[] employees = {"Christophe Coenraets", "John Smith"}; 
    
        ListAdapter adapter = new ArrayAdapter<String> (this,R.layout.activity_main,R.id.emp_item,employees);  
    
        ListView employeeList = (ListView) findViewById(R.id.emp_list); 
        employeeList.setAdapter(adapter); 
        setContentView(R.layout.activity_main); 
    
    } 
    
+0

Вот это начало журнала: D/dalvikvm (786): GC_FOR_ALLOC освободил 9, 77 К% свободного 2546K/2772K, остановился 71ms, общая 77ms D/AndroidRuntime (786): Завершение работы VM 07-24 23: 09: 11.386: W/dalvikvm (786): threadid = 1: поток, выходящий с неперехваченным исключением (group = 0x40a71930) 07-24 23: 09: 11.415 : E/AndroidRuntime (786): FATAL EXCEPTION: main 07-24 23: 09: 11.415: E/AndroidRuntime (786): android.content.res.Resources $ NotFoundException: Идентификатор ресурса # 0x7f080002 type # 0x12 недействителен 07-24 23: 09: 11.415: E/AndroidRuntime (7 86): \t at android.content.res.Resources.loadXmlResourceParser (Resources.java:2144) – user2616375

ответ

2

Вам необходимо сначала установить представление контента, как показано в следующем коде.

protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    String[] employees = {"Christophe Coenraets", "John Smith"}; 

    ListAdapter adapter = new ArrayAdapter(this,R.layout.activity_main,R.id.emp_item,employees); 

    ListView employeeList = (ListView) findViewById(R.id.emp_list); 
    employeeList.setAdapter(adapter); 
} 

В вашем случае она возвращает нуль на findViewById (R.id.emp_list), поскольку его мнение содержание пока не уточняется.

0

setContentView должен быть использован первый ...

protected void onCreate(Bundle savedInstanceState){ 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
String[] employees = {"Christophe Coenraets", "John Smith"}; 

ListAdapter adapter = new ArrayAdapter(this,R.layout.activity_main,R.id.emp_item,employees); 

ListView employeeList = (ListView) findViewById(R.id.emp_list); 
employeeList.setAdapter(adapter); 
} 
+0

В журнале я нашел недопустимый идентификатор ресурса: 00079x, который в R.java указывает на emp_item Textview, видимо, текстовое представление было объявлено в emp_list_item .xml. Я создал текстовое представление в файле activity_main и передал его в адаптер. Теперь приложение не выдало никаких ошибок, но без вывода. – user2616375

+0

«без вывода». Вы имеете в виду, что ваш список не заселен? Или весь экран пуст, и даже не показывает ваш «edittext» и кнопку? –

+0

Да весь экран пустой. После изменения текстового поля: журнал говорит 07-24 23: 33: 21.545: E/Trace (854): файл с открытием ошибки: нет такого файла или каталога (2) – user2616375

Смежные вопросы