您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: