您的位置:首页 > 移动开发 > Android开发

Android基础之AdapterView系列学习

2016-01-24 21:44 316 查看
AdapterView介绍

AdapterView是ListView的间接父类。定义了一个可以通过适配器加载和显示多个列表项的容器控件。其两个主要子类是:AbsListView和

AbsSpinner,二者最大的区别在于核心响应事件不同。

·AdapterView是ViewGroup的子类

·可包含多个列表项用于显示一组数据

·AdapterView类中啊addView方法被禁用,其数据提供通过适配器对象来完成

·两个直接子类的区别在于核心事件不同

AbsListView:显项被单击时不会有特殊显示
GridView 网格形式显示列表项
ListView 垂直线性布局显示
AbsSpinner:列表项中的选中事件一旦被选中,列表项会被特殊显示
Gallery  4.0之后不建议使用
Spinner


GridView控件:

·GridView与ListView一样都是容器控件

·继承自AbsListView

·用网格的形式显示列表项

主要属性        Java方法          作用
ColumnWidth     setCoumnWidth(int i)        设置列表宽度
Gravity         setGravity(int i)       设置对齐方式
horizontalSpacing   setHorizontalSpacing        设置各元素之间的水平问题
numColumns      setNumColumns(int i)        设置列数
stretchMode     setStretchMode(int i)       设置拉伸模式

NO_STRETCH      不拉伸
STRETCH_SPACING     仅拉伸元素之间的间距
STRETCH_SPACING_UNIFORM 表格元素本身,元素之间的间距一起拉伸
STRETCH_COLLUMN_WIDTH   仅拉伸表格元素本身


Spinner

Spinner是AbsSpinner的子类,通常称为下拉列表。其界面主要由两部分构成:内容显示区和下拉提示列表。其核心事件是列表项选中事件。

被选中的列表项会在显示区显示。

示例:

效果图:



package com.example.spinner;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class MainActivity extends Activity {
private String[] number ={
"一","二","三","四","五","六","七","八","九"
};
private Spinner spinner;
private ArrayAdapter<String> adapter;
private void setupView(){
spinner = (Spinner) findViewById(R.id.spinner);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, number);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupView();
}

}


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

</LinearLayout>


AutoCompleteTextView

AutoCompleteTextView是EditText的直接子类,该类继承了EditText的所有行为和属性,同时该类的内部组合了一个AdapterView对象,通过

该对象可以实现对输入框内输入的文本的过滤显示。

·继承自EditText

·其内部包含一个AdapterView对象,可以通过该控件的setAdapter方法,为AdapterView对象提供过滤数据

·setAdapter方法中接受的适配器必须实现Filterable借口

·主要方法:

- void setThreshold(int threshold) //指定输入几个字符之后才开始过滤匹配

- void setCompletionHint(CharSequence hint) //列表最后显示的信息

示例:



效果图

package com.example.autocompletetextview;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class MainActivity extends Activity {
private AutoCompleteTextView auto;
private ArrayAdapter<String> adapter;
private String[] str={
"able","ajk","ajkgf","ahisd","ksdfa","ksadfg","kwerw","kvbsb","msadf","msadg"
};
private void setupView(){
auto = (AutoCompleteTextView) findViewById(R.id.auto);
auto.setThreshold(1);
auto.setCompletionHint("搜索结果...");
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, str);
auto.setAdapter(adapter);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupView();
}

}


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<AutoCompleteTextView
android:id="@+id/auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

</RelativeLayout>


MultiAutoCompleteTextView

MultiAutoCompleteTextView继承自AutoCompleteTextView,与其父类最重要的区别在于MultiAutoCompleteTextView控件允许用户进行多次输入补全。该控件使用时必须设置分词符。该类内部包含了一个默认的逗号分词符。

·继承自AutoCompleteTextView
·充许进行多次提示
·多次输入项使用指定的分词符间隔
·主要方法:
- void setTokenizer(Tokenizer t)
·MultiAutoConpleteTextView类中包含一个Tokenizer接口的实现类CommaTokenizer


示例:



效果图

package com.example.multiautocompletetextview;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.MultiAutoCompleteTextView;

public class MainActivity extends Activity {
private String[] str={
"able","ajk","ajkgf","ahisd","ksdfa","ksadfg","kwerw","kvbsb","msadf","msadg"
};
private MultiAutoCompleteTextView multi;
private ArrayAdapter<String> adapter;
private void setupView(){
multi = (MultiAutoCompleteTextView) findViewById(R.id.multi);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, str);
multi.setAdapter(adapter);
multi.setThreshold(1);
multi.setCompletionHint("历史搜索结果..");
multi.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setupView();
}
}


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<MultiAutoCompleteTextView
android:id="@+id/multi"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

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