ListView с атрибутом id 'android.R.id.list' Ошибка, когда у меня правильно установлен идентификатор ListView - PullRequest
16 голосов
/ 31 марта 2011

У меня есть Listview с пользовательским адаптером.Я получаю стандартную ошибку

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

, однако в My ListView установлено значение android:id="@android:id/list".Это действительно заставляет меня задуматься. Есть предложения?

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/Layout">
    <ListView android:id="@android:id/list" style="@stlye/ListMenuView"></ListView>
</LinearLayout>

styles.xml

<resources>
    <style name="Layout" parent="@android:Theme">
        <item name="android:background">@drawable/background</item>
        <item name="android:scaleType">fitXY</item>
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">fill_parent</item>
        <item name="android:orientation">vertical</item> 
    </style>
    <style name="ListMenuView">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:cacheColorHint">#00000000</item>
    </style>
</resources>

Мой метод onCreate:

/** Called when the activity is first created. */
@Override
public void onCreate( Bundle savedInstanceState ) {
    super.onCreate( savedInstanceState );
    setContentView( R.layout.main );

    m_menu = new ArrayList<ListItemData>();
    populateMenu();


    this.m_adapter = new ListMenuAdapter( this, R.layout.list_item, m_menu );

    setListAdapter(this.m_adapter);
}

Есть идеи?

Ответы [ 3 ]

24 голосов
/ 31 марта 2011

android:id="@android:id/list" работает отлично, моя проблема была в том, что у меня был экран-заставка, который унаследовал базовый класс, который унаследовал ListActivity и не имел ListView , определенных для активности экрана-заставки. Я изменил SplashScreen, чтобы просто наследовать Activity. Все работает как положено.

6 голосов
/ 09 марта 2012

Я столкнулся с той же проблемой. Я расширяю Activity вместо класса ListActivity, и это решило мою проблему.

1 голос
/ 31 марта 2011

Вы говорите, что используете пользовательский адаптер, но из кода я не вижу такого адаптера. Здесь вы можете скачать весь проект Android, http://blog.sptechnolab.com/wp-content/uploads/2011/02/listBlog.zip.

...