ListView的基本创建方式
1.ListView
主要介绍了采用标签创建以及ArrayAdapter适配器以及采用继承ListActivity的方式创建列表项
1.简介
- 是一个列表控件,以列表的形式展示具体内容,可以给各行设置事件监听器
- ListView中View负责显示和更新,数据由Adapter提供
2.属性
- entires,数据源
- divider,分割条
- dividerHeight,分割条高度
补充:事件监听
- OnItemClickListener,点击子项就会触发
- 参数1:可以获取Adapter对象
- 参数2:子布局View对象
- 参数3:当前点击的是第几个子项
- 参数4:和参数3一致
- setOnTouchListener,触碰到ListView会触发
- setOnScrollListener,在ListView滚动的时候会触发
2.创建方式
- 直接ListView
- 适配器ArrayAdapter提供数据
- entires提供数据
- 继承ListView类
2.1使用values中的数据
(1)values下的数据
<!-- 1.自定义TextView的公共属性-->
<style name="textCommen">
<item name="android:textSize">25dp</item>
<item name="android:textColor">#4CAF50</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
</style>
(2)布局文件
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/hot_citys"
/>
2.2适配器 ArrayAdapter
- 此时填入的数据不仅仅是数据可以是图片等
- 适配器是数据和ListView之间的中介
- 和MVC中的Controller差不多意思
- ArrayAdapter参数
- 上下文
- 布局文件
- 数据
布局文件:采用的是系统的:注意是android.R.layout包下的
(1)布局文件
<ListView
android:id="@+id/listview1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
(2)Java代码
ListView listView=findViewById(R.id.listview1);
//创建数据源
List<String> list=new ArrayList<>();
list.add("济南");
list.add("潍坊");
list.add("威海");
list.add("日照");
ArrayAdapter adapter=new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice,list);
listView.setAdapter(adapter);
2.3继承ListActivity创建列表项
- 直接继承;ListActivity,不用写原先的Activity
- 把setContentView删除
//继承ListView实现的列表项
public class ListViewTest2 extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//创建数据源
List<String> list=new ArrayList<>();
list.add("济南");
list.add("潍坊");
list.add("威海");
list.add("日照");
ArrayAdapter adapter=new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice,list);
setListAdapter(adapter);
}
}
2.4改进版本:采用自定义的布局文件
(1)自定义布局文件
- 根布局采用的是TextView而不是原先的LinerLayout,且必须命名
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/arrtext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30dp"
android:textColor="@color/red"
/>
(2)Java代码
List<String> list=new ArrayList<>();
list.add("济南");
list.add("潍坊");
list.add("威海");
list.add("日照");
ArrayAdapter adapter=new ArrayAdapter(this, R.layout.array_list,list);
setListAdapter(adapter);