推荐网站:iconfont
ctrl+H 可以打开类的继承关系
AdapterView
- AdapterView:容器控件,其整体效果由每一个子元素内容决定,子元素的形式由**Adapter(适配器)**决定。是ViewGroup的子类。
- AdapterView中的每一项叫做 item
- 子视图对象
- ListView 以垂直滑动列表形式显示一组数据
- GridView 以网格形式显示一组数据
- Spinner 以下拉列表形式显示一组数据
- Gallery :以水平滑动列表形式显示一组数据(此类已经弃用,用HorizontalScrollView和ViewPager代替)
- Adapter作用:数据和视图之间交互的中介
- 数据改变时,不需要修改试图组件,只需更新Adapter
- 对于同一视图组件(AdapterView子对象),数据源可能来自不同形式
- 视图组件变化时,不需要修改数据,绑定形同Adapter
- 对于同一组数据,可以显示为不同的视图形式(ListView等)
- 数据改变时,不需要修改试图组件,只需更新Adapter
- 常用Adapter
- ArrayAdapter:数据源为文本字符串数组
- SimpleAdapter:简单适配器,数据源一般为 List - Adapter View使用的基本流程:
- 准备数据源(现在为本地数据源,今后扩展为网络)。
- 准备AdapterView每一个子项的视图布局。
- 创建Adapter(连接数据源和视图布局)。
- 为指定AdapterView视图组件绑定适配器。
- 为AdapterView绑定事件监听器。(可有可无)
ListView:以垂直可滑动列表形式显示子项目的视图容器,是一种AdapterView
//ListView使用步骤
//1.准备数据源
String[] names = {"Android基础开发","Android高级编程","Android综合应用"};
//2.准备item的布局文件(SDK自带的布局文件)
//3.选择一种Adapter
ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(this,//环境上下文
android.R.layout.simple_list_item_1,//item的布局文件
names);//数据源
ListView nameListView = findViewById(R.id.lv_names);
nameListView.setAdapter(myAdapter);
//4.给ListView设置item点击监听事件
nameListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//parent是ListView对象
//view是点击的item视图对象
//
Log.e("点击",position+"条");
view.setBackgroundColor(getResources().getColor(android.R.color.holo_red_dark));
}
});
<?xml version="1.0" encoding="utf-8"?>
<!--<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"-->
<!-- xmlns:app="http://schemas.android.com/apk/res-auto"-->
<!-- xmlns:tools="http://schemas.android.com/tools"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- tools:context=".MainActivity">-->
<!-- <ListView-->
<!-- android:id="@+id/lv_names"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- ></ListView>-->
<!--</androidx.constraintlayout.widget.ConstraintLayout>-->
<ListView
android:id="@+id/lv_names"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android" />