Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error on creating creating a ListView

I got an error in creating a ListView here's the error:

01-30 18:42:42.177: E/AndroidRuntime(396): FATAL EXCEPTION: main
01-30 18:42:42.177: E/AndroidRuntime(396): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.databasetest/com.example.databasetest.ViewData}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
01-30 18:42:42.177: E/AndroidRuntime(396):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-30 18:42:42.177: E/AndroidRuntime(396):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-30 18:42:42.177: E/AndroidRuntime(396):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-30 18:42:42.177: E/AndroidRuntime(396):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-30 18:42:42.177: E/AndroidRuntime(396):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-30 18:42:42.177: E/AndroidRuntime(396):  at android.os.Looper.loop(Looper.java:123)
01-30 18:42:42.177: E/AndroidRuntime(396):  at android.app.ActivityThread.main(ActivityThread.java:4627)
01-30 18:42:42.177: E/AndroidRuntime(396):  at java.lang.reflect.Method.invokeNative(Native Method)
01-30 18:42:42.177: E/AndroidRuntime(396):  at java.lang.reflect.Method.invoke(Method.java:521)
01-30 18:42:42.177: E/AndroidRuntime(396):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-30 18:42:42.177: E/AndroidRuntime(396):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-30 18:42:42.177: E/AndroidRuntime(396):  at dalvik.system.NativeStart.main(Native Method)
01-30 18:42:42.177: E/AndroidRuntime(396): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
01-30 18:42:42.177: E/AndroidRuntime(396):  at android.app.ListActivity.onContentChanged(ListActivity.java:245)
01-30 18:42:42.177: E/AndroidRuntime(396):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:201)
01-30 18:42:42.177: E/AndroidRuntime(396):  at android.app.Activity.setContentView(Activity.java:1647)
01-30 18:42:42.177: E/AndroidRuntime(396):  at com.example.databasetest.ViewData.onCreate(ViewData.java:19)
01-30 18:42:42.177: E/AndroidRuntime(396):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-30 18:42:42.177: E/AndroidRuntime(396):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-30 18:42:42.177: E/AndroidRuntime(396):  ... 11 more

i don't why the emulator looking for the android:R.id.list

here's my code on the Activity that will use the listView

package com.example.databasetest;

import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.widget.ListView;

public class ViewData extends ListActivity {

    private DBHandler dbHelper;
    private SimpleCursorAdapter dataAdapter;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view_data);

        displayListView();

    }
    private void displayListView() {

        Cursor cursor = dbHelper.getData();
        String[] columns = new String[] {
                DBHandler.COL_NAME,
                DBHandler.COL_ADDRESS,
                DBHandler.COL_PHONE,
                DBHandler.COL_EMAIL
        };
        int[] to = new int[] { 
                R.id.name,
                R.id.address,
                R.id.phone,
                R.id.email,
        };
        dataAdapter = new SimpleCursorAdapter(this, R.layout.country_info, 
                cursor, 
                columns, 
                to,
                0);

        ListView listView = (ListView) findViewById(R.id.listView1);
        // Assign adapter to ListView
        listView.setAdapter(dataAdapter);
    }
}

and here is the two XML file that i'm gonna use for the listView view_data.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

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

</LinearLayout>

and lastly country_info.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="6dip" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="Name: "
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:text="Address: "
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView2"
        android:text="Phone: "
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView3"
        android:layout_below="@+id/textView3"
        android:text="Email: "
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView3"
        android:layout_alignBottom="@+id/textView3"
        android:layout_toRightOf="@+id/textView3"
        android:text="Test" />

    <TextView
        android:id="@+id/address"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView4"
        android:layout_alignBottom="@+id/textView4"
        android:layout_alignLeft="@+id/continent"
        android:text="Test" />

    <TextView
        android:id="@+id/phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView3"
        android:layout_toRightOf="@+id/textView3"
        android:text="Test" />

    <TextView
        android:id="@+id/email"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView2"
        android:layout_alignLeft="@+id/name"
        android:text="Test" />

</RelativeLayout>

I hope you can help me. Thanks in advance.

like image 463
Cadis Etrama Di Raizel Avatar asked Mar 19 '26 07:03

Cadis Etrama Di Raizel


2 Answers

public class ViewData extends Activity 

Change listactivity to activity.

Create your class as Activity because list activity always uses built in list not ur customised list.

like image 198
Venkatesh S Avatar answered Mar 20 '26 20:03

Venkatesh S


Put this:

ListView listview = (ListView) findViewById(android.R.id.list);

and in the XML

<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
like image 31
Guilherme Gregores Avatar answered Mar 20 '26 20:03

Guilherme Gregores



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!