ListView控件

白鸽 2012-02-13 02:58:39
刚学习android开发,学到ListView的

ListView需要适配器来完成根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter。在学习中有这样的一个问题ArrayAdapter和SimpleCursorAdapter可以通过SetContentView就可以完成不需要类继承ListActivity
但是SimpleAdapter就需要继承ListActivity实现。

想问下这个是不是必须的,大虾讲下原理。
...全文
83 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
白鸽 2012-02-14
  • 打赏
  • 举报
回复
大侠们!那直接继承和不直接继承都有什么好处,哪些优势??
j_f0001 2012-02-14
  • 打赏
  • 举报
回复
不是必须的,适合器跟组件没有必然联系
小王爷 2012-02-14
  • 打赏
  • 举报
回复
SimpleAdapter不用继承ListActivity,我也是新手,说不清为什么,反正我用的SimpleAdapter都没继承ListActivity
BadPattern 2012-02-14
  • 打赏
  • 举报
回复
不是必须的,我个人喜欢直接继承Activity
白鸽 2012-02-14
  • 打赏
  • 举报
回复
额,,难道没得人给我说说嘛!!求高人
BadPattern 2012-02-14
  • 打赏
  • 举报
回复
继承自ListActivity没什么太大的好处,见sdk doc文档描述:
ListActivity has a default layout that consists of a single, full-screen list
in the center of the screen. However, if you desire, you can customize the
screen layout by setting your own view layout with setContentView() in
onCreate(). To do this, your own view MUST contain a ListView object with the
id "@android:id/list" (or {@link android.R.id#list} if it's in code)

继承自ListActivity的类必须在layout中有一个id为@android:id/list的ListView控件,而且由于java是单继承的,所以继承了ListActivity就不可以再继承其他的类.

再从源码角度看一下ListActivity,大概只有两百行代码,唯一有实质性作用的方法就是覆盖了Activity的onContentChanged方法:

@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;
}


表明你可以用一个id为empty的ListView表示当前没有元素的显示.

再来看看ListActivity用神马xml布局的:

<ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
/>


坑爹不?所以还是自己继承自Activity算了,ListActivity并没有给太多的好处,反而限制多多
ztt1989ad 2012-02-13
  • 打赏
  • 举报
回复

80,356

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧