0

Possible Duplicate:
runtime exception ListView whose id attribute is ‘android.R.id.list’

I am new to android I get the following runtime error.

"Your content must have a ListView whose id attribute is android.R.id.list"

I was trying following tutorial

http://www.mkyong.com/android/android-listview-example/ "Custom ArrayAdapter example"

when I run their code it works fine and they use android 2.3.3 I use 4.0

I changed their code according to my requriment and got above runtime error in logcat. here is my code.

import android.app.ListActivity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;

import com.xxxx.xxx.adapter.ListArrayAdapter;

public class Page5SubActivity extends ListActivity {

    static final String[] MOBILE_OS = new String[] { "Android", "iOS",
            "WindowsMobile", "Blackberry", "test", "test2" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.page5sub);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        Intent intent = getIntent();
        int val = intent.getIntExtra("id", 0);

        switch (val) {

        case 2:
            setListAdapter(new ListArrayAdapter(this, MOBILE_OS));

            break;

        case 3:
            break;

        case 4:
            break;

        }

    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {

        // get selected items
        String selectedValue = (String) getListAdapter().getItem(position);
        Toast.makeText(this, selectedValue, Toast.LENGTH_SHORT).show();

    }

    public void onClickBtn(View v) {

        switch (v.getId()) {

        case R.id.back_arrow:
            Intent intent2 = new Intent(Page5SubActivity.this,
                    Page5Activity.class);
            // intent2.putExtra("id", 2);
            startActivity(intent2);

            break;
        }

    }

}

Here is the code of xml file

<?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="fill_parent"
    android:background="@drawable/page1background"
    android:gravity="center" >


    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_centerInParent="false"
        android:layout_marginBottom="@dimen/padding_Xlarge"
        android:layout_marginTop="@dimen/padding_large"
        android:paddingTop="@dimen/padding_large"
        android:text="@string/text"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@color/textbody" />

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_below="@id/textView1"
        android:layout_centerHorizontal="true"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/text" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_below="@id/linearLayout1"
        android:weightSum="10" >

        <View
            android:id="@+id/view1"
            android:layout_width="0dip"
            android:layout_height="30dp"
            android:layout_marginBottom="35dp"
            android:layout_weight="1" />

        <ImageView
            android:id="@+id/logo"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="5dp"
            android:contentDescription="@string/Description" >
        </ImageView>

        <TextView
            android:id="@+id/label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@+id/label" >
        </TextView>

        <View
            android:id="@+id/view2"
            android:layout_width="0dip"
            android:layout_height="30dp"
            android:layout_marginBottom="35dp"
            android:layout_weight="1" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:weightSum="10" >

        <View
            android:id="@+id/view3"
            android:layout_width="0dip"
            android:layout_height="30dp"
            android:layout_marginBottom="35dp"
            android:layout_weight="4.5" />

        <ImageButton
            android:id="@+id/back_arrow"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginBottom="35dp"
            android:layout_weight="1"
            android:background="@drawable/backbut"
            android:contentDescription="@string/Description"
            android:onClick="onClickBtn"
            android:src="@drawable/backarrowpress" />

        <View
            android:id="@+id/view4"
            android:layout_width="0dip"
            android:layout_height="30dp"
            android:layout_marginBottom="35dp"
            android:layout_weight="4.5" />
    </LinearLayout>

</RelativeLayout>

in their example they dont use listview widget in xml file but mention in the log cat. apartfrom that it says unable to start activity compnonetinfo.

where do I have done wrong? plz help me to correct this.

Here is the original code of the xml file. here is the source of original code

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="5dp" >

    <ImageView
        android:id="@+id/logo"
        android:layout_width="50px"
        android:layout_height="50px"
        android:layout_marginLeft="5px"
        android:layout_marginRight="20px"
        android:layout_marginTop="5px"
        android:src="@drawable/windowsmobile_logo" >
    </ImageView>

    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@+id/label"
        android:textSize="30px" >
    </TextView>

</LinearLayout>

I notice they dont have use listview widget in their xml file but works this example.

Community
  • 1
  • 1
newday
  • 3,842
  • 10
  • 54
  • 79

5 Answers5

4

Your solution in your error

"Your content must have a ListView whose id attribute is android.R.id.list"

If your are using ListActivity then you must have ListView in your xml of layout and must be id of ListView is android.R.id.list

So must add listview in your layout like below code

<ListView 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:id="@+id/android:list" />
Niranj Patel
  • 32,980
  • 10
  • 97
  • 133
2

when you extend ListActivity then your xml layout file must have ListView whose id is android.R.id.list

so put listview in xml layout file and android:id="@+id/android.R.id.list"

TofuBeer
  • 60,850
  • 18
  • 118
  • 163
Samir Mangroliya
  • 39,918
  • 16
  • 117
  • 134
1

set your Listview id like this

android:id="@id/android:list"
Mehul Ranpara
  • 4,245
  • 2
  • 26
  • 39
1

in your layout xml file you must set id of you ListView to @android:id/list

techroid
  • 477
  • 4
  • 11
1

set adapter like this.

  Adapter = new Adapter<String>(this,android.R.layout.simple_list_item_1, list);

or check XML

<ListView 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:id="@+id/android:list" />
URAndroid
  • 6,177
  • 6
  • 30
  • 40