android中的系统ID

时间:2011-07-20 01:37:57

标签: android xml

我一直在关注记事本教程,我注意到我必须在我的XML文件中使用R.id.emptyR.id.list才能让程序正常工作。

这些ID是什么意思?

我是否必须为我的所有列表提供R.id.list ID?

我尝试在reference page中查找它们,但它们没有说明。

2 个答案:

答案 0 :(得分:2)

我不熟悉R.id.empty,但是当你使用带有自定义布局的ListActivity时,必须使用android.R.id.list。

请参阅android.app.ListActivity

  

ListActivity具有默认布局,该布局由屏幕中央的单个全屏列表组成。但是,如果需要,可以通过在onCreate()中使用setContentView()设置自己的视图布局来自定义屏幕布局。为此,您自己的视图必须包含一个ID为“@android:id / list”的ListView对象(如果它在代码中则列出)

答案 1 :(得分:1)

请参阅ListActivity.java

@Override
public void onContentChanged() {
    super.onContentChanged();
    View emptyView = findViewById(com.android.internal.R.id.empty);
    mList = (ListView)findViewById(com.android.internal.R.id.list);
    if (mList == null) {
        throw new RuntimeException(
                "Your content must have a ListView whose id attribute is " +
                "'android.R.id.list'");
    }
    if (emptyView != null) {
        mList.setEmptyView(emptyView);
    }
    mList.setOnItemClickListener(mOnClickListener);
    if (mFinishedStart) {
        setListAdapter(mAdapter);
    }
    mHandler.post(mRequestFocus);
    mFinishedStart = true;
}

这就是为什么你应该在你的xml中定义“android:id="@android:id/list"”,让ListActivity.java在执行mList = (ListView)findViewById(com.android.internal.R.id.list);时找到所需的布局。