2017-07-10 2 views
-2

J'ai passé la lecture et l'ajustement de mon code pendant un moment maintenant mais il continue à s'écraser et je n'arrive pas à comprendre pourquoi il plante. Quelqu'un peut-il s'il vous plaît indiquer où je fais l'erreur. Je suis un natif de la programmation et du développement Android essayant de comprendre les bases de ArrayAdapters et ListViews.ArrayAdapter et ListView - mon appli se bloque

Voici mon code: MainActivity.java

package com.example.android.samplelistviewapp; 

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

import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity { 

    ArrayList<String> listItems = new ArrayList<String>(); 

    ArrayAdapter<String> adapter; 

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

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

     listItems.add("hello"); 
     listItems.add("how do you do"); 
     listItems.add("Ca va"); 
     listItems.add("Bonjour"); 
     listItems.add("Toronto"); 
     listItems.add("hello"); 
     listItems.add("mississauga"); 
     listItems.add("computer"); 
     listItems.add("ipad"); 
     listItems.add("sky"); 
     listItems.add("hello"); 
     listItems.add("road"); 
     listItems.add("mountain"); 

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

     listView.setAdapter(adapter); 
    } 
} 

Voici mon xml: activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<ListView 
    android:id="@+id/list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    xmlns:android="http://schemas.android.com/apk/res/android" /> 
+1

Postez le stacktrace s'il vous plaît –

+0

Quelle erreur obtenez-vous? – Maantje

Répondre

3

ListView listView = (ListView) findViewById(R.id.list); est exécuté dans le constructeur, avant l'appel à setContentView. Étant donné que la vue n'a pas encore été chargée, la vue demandée n'existe pas, renvoyant null.

Déplacer le findViewById à après l'appel à setContentView

+0

Merci! Cela l'a réparé. – tee