ListView和ListActivity
2015-06-08 15:09
399 查看
ListView的形式
ListView以垂直列表的形式显示所有列表项创建ListView有如下两种方式:
1)直接使用ListView进行创建
2)让Activity继承ListActivity(相当于该Activity显示的组件是ListView)
ListActivity的使用方法
1、直接继承ListActivity,ListActivity无须界面布局文件,它的布局文件相当于只有一个ListView.因此只要为ListActivty设置Adapter即可。1)定义MainActivity文件
public class MainActivity extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_main); //无须使用布局文件 String[] arr={"孙悟空","猪八戒","唐僧"}; //创建ArrayAdapter对象 ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,arr); //设置窗口显示列表 setListAdapter(adapter); } }
Android提供了一些标准的布局文件,例如上面的simple_list_item_multiple_choice。在使用的时候可以具体查阅。
运行的结果如下所示:
使用这种方式的不能灵活的对界面元素进行修改,那如何进行自定义界面布局呢?
2、使用自定义的界面布局
可以通过在onCreate()方法中通过设置setContentView(int layoutId)方法设置用户的自定义布局
具体实现如下:
1)实现MainActivity文件
public class MainActivity extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //无须使用布局文件 String[] arr={"孙悟空","猪八戒","唐僧"}; //创建ArrayAdapter对象 ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.activity_listview,arr); //设置窗口显示列表 setListAdapter(adapter); } }2)相对于第一种方式,在这里面我添加了两个布局文件,一个是activity_main布局文件和activity_listview布局文件,设置方式分别如下:
activity_main文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <!-- 自定义一个ListView --> <ListView android:id="@+id/android:list" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/yellow" android:drawSelectorOnTop="false" /> </LinearLayout>activity_listview
<?xml version="1.0" encoding="utf-8"?> <!-- 对每个item进行设置 --> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/label" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" android:background="@color/yellow" android:textStyle="bold"> </TextView>
运行的结果如下所示
运行中出现的错误:
Your content must have a ListView whose id attribute is 'android.R.id.list'
解决方法:
出现该问题的原因是我在activity_main文件命名ListView的名称时是自定义了一个名字。但是在继承ListActivity的情况下,必须命名成android:id="@+id/android:list"或者android:id="@android:id/list"才可以。这相当于你修改的仍然是ListActivity中自带的ListView,并对它的布局信息进行修改。否则,可以直接继承Activity实现自己的ListView
相关文章推荐
- 关于C#编程中引用与值类型赋值的一些容易犯错的地方
- 将PS/2接口鼠标改造成USB接口鼠标
- CSS3 @font-face
- 对视图有时为什么使用select top 100 percent * 而不使用 select * 呢?
- CAS 4.0 配置开发手册
- iOS 数据持久化
- [EXTJS]combo下拉框可多选
- NSObject和反射2
- CAS实现单点登录(SSO)经典完整教程
- oracle错误(四) ORA-04088: 触发器 'SL.CMS_CHANNEL_TRI' 执行过程中出错的解决办法
- android Path类
- c# socket 判断端口是否被占用
- 配置spring
- Java核心技术图
- 1396 - Operation CREATE USER failed
- [Android] 使用JSON和SharedPreferences存储用户自定义类
- body和document的梗
- easyui datagrid 中序列化后的日期格式化
- LayoutSynthesisTree(树集合篇汇总)
- mahout 实战