android AdapterView以及子类

GridView网格视图

之前有说过ListView和Adapter,本次要说的是GridView,它和ListView基本相同,区别在于ListView只显示一列,而GridView可以显示多列,当GridView只显示一列的话,那么它相当于ListView。关系图解

GridView常用属性

android:columnWidth 设置列的宽度

android:gravity 设置对齐方式

android:horizontalSpacing 设置各元素之间的水平间距

android:verticalSpacing 设置各元素之间的垂直间距

android:numColumns 设置列数 默认是1

android:stretchMode 设置拉伸模式

GridView的Demo:

MainActivity.java

public class MainActivity extends Activity {GridView gview;ImageView img;//给适配器设置9张系统内置的图片int[] imgs = new int[] {android.R.drawable.ic_btn_speak_now,android.R.drawable.ic_delete,android.R.drawable.ic_dialog_alert,android.R.drawable.ic_dialog_dialer,android.R.drawable.ic_dialog_email,android.R.drawable.ic_lock_idle_alarm,android.R.drawable.ic_input_add,android.R.drawable.ic_media_ff,android.R.drawable.ic_menu_call };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);img=(ImageView) findViewById(R.id.img);List<Map<String, Object>> listitems = new ArrayList<Map<String, Object>>();//通过循环把9张图片添加List集合中for (int i = 0; i < imgs.length; i++) {Map<String, Object> map = new HashMap<String, Object>();map.put("image", imgs[i]);listitems.add(map);}//参数3 展示的布局文件//参数4把参数2集合中的Key值拿出来//参数5把拿出来的key值放在该空间上展示SimpleAdapter adapter = new SimpleAdapter(this, listitems, R.layout.cell, new String[]{"image"}, new int[]{R.id.image1});gview=(GridView) findViewById(R.id.gv);gview.setAdapter(adapter);//给GridView添加点击监听gview.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {//显示被点击的图片img.setImageResource(imgs[position]);System.out.println("被点击了~~~~~~~~~~~");}});//给GridView选中监听gview.setOnItemSelectedListener(new OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> parent, View view,int position, long id) {//显示被选中的图片img.setImageResource(imgs[position]);System.out.println("被选中了");}@Overridepublic void onNothingSelected(AdapterView<?> parent) {}});}}activity_main.xml<LinearLayout xmlns:android=""xmlns:tools=""android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:gravity="center_horizontal" ><GridView android:id="@+id/gv"android:layout_width="match_parent"android:layout_height="wrap_content"android:numColumns="3"android:gravity="center"android:horizontalSpacing="1pt"android:verticalSpacing="1pt"/><ImageViewandroid:id="@+id/img"android:layout_width="300dp"android:layout_height="300dp"android:layout_gravity="center_horizontal"/></LinearLayout>cell.xml<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android=""android:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="center_horizontal"android:padding="2pt"><ImageViewandroid:id="@+id/image1"android:layout_width="50dp" android:layout_height="50dp" /></LinearLayout>效果图:

ExpandableListView可展开的列表组件

ExpandableListView是ListView的子类,它进行的扩展是把列表项分为几组,每个组里又包含多个列表项,在用法上与ListView非常相似,ExpandableListView的列表项由ExpandableListAdapter提供,ExpandableListAdapter也是一个接口,下面是该接口的继承关系图:

上图可以看出,虽然后缀是Adapter但是他的关系只是继承Object而已,但是与Adapter类似,它有三种常用方式

1.扩展BaseExpandableListAdapter实现ExpandableListAdapte

2.使用SimpleExpandableListAdapter将两个List集合

3.使用SimpleCursorTreeAdapter将Cursor中的数据包装成SimpleCursorTreeAdapter

额外支持的XML属性

android:childDivider 指定各组内各子列表项之间的分隔条

android:childIndicator 显示在子列表旁边的Drawalbe对象

android:groupIndicator 显示在组列表项旁边的Drawable对象

组元素表示可折叠的列表项,子元素表示列表项展开后看到的多个子元素项

简单模拟QQ分组样式

失败是成功的亲娘,没有失败哪来的成功呢?诺贝尔如果不经历千万次的失败,

android AdapterView以及子类

相关文章:

你感兴趣的文章:

标签云: