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