1

I'm trying to show a simple ListView ,but I have some problems .It seems that I had a NullPointerException . Here's the 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">

<ListView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/listView"
    />

and my main class :

 public class MainActivity extends Activity {

private List<String> exemple;
private ListView liste=(ListView) findViewById(R.id.listView);


protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

   exemple=new ArrayList<String>();

    exemple.add("Item 1");
    exemple.add("Item 2");
    exemple.add("Item 3");

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, exemple);
    liste.setAdapter(adapter);
}
}

I got this error :

07-07 11:59:27.024    2758-2758/tunisia_sat.com.essai E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: tunisia_sat.com.essai, PID: 2758
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{tunisia_sat.com.essai/tunisia_sat.com.essai.MainActivity}: java.lang.NullPointerException
1
  • move your private ListView liste=(ListView) findViewById(R.id.listView); in onCreate() after setContentView() Commented Jul 7, 2015 at 16:19

4 Answers 4

4

Move liste initialization after setContentView:

setContentView(R.layout.activity_main);
liste = (ListView) findViewById(R.id.listView);

Why NullPointerException?
You are calling ssetAdapter on null reference liste in the following line:

liste.setAdapter(adapter);

liste is null because it is being initialized before view is up(binding activity with view). So, findViewById returns Null.

Sign up to request clarification or add additional context in comments.

Comments

2

Do not initialize ListView in declaration. Just do this:

public class MainActivity extends Activity {

private List<String> exemple;
private ListView liste;

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

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

    exemple=new ArrayList<String>();
    exemple.add("Item 1");
    exemple.add("Item 2");
    exemple.add("Item 3");

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, exemple);
    liste.setAdapter(adapter);
}
}

Comments

0

You should Cast your listview after setting contentView int your onCreate method:

so you should do this:

outside your method, declare your ListView.

ListView listView;

So then cast in onCreate method:

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

Regards.

2 Comments

why to repeat answer ?
well, maybe because when i write mi answer i didnt see the first one... perhaps was not intencionally.
0
Write the following statement 

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

in Oncreate() method after 

setContentView(R.layout.activity_main);

Example:

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

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

   exemple=new ArrayList<String>(); 
    exemple.add("Item 1");
    exemple.add("Item 2");
    exemple.add("Item 3");

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, exemple);
    liste.setAdapter(adapter);
} 

1 Comment

why to repeat answer ?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.