Spinner 列表选择框
Spinner是一个下拉列表,通常用于选择一系列可选择的列表项,它可以使用适配器,也可以
直接设置数组源。
android:entries=”@array/xx”/>//设置数组源
通过setOnItemSelectedListener来监听他的改变
示例图如下;
public class MainActivity extends Activity {
Spinner spinner;
String[] array = { "", "普快", "空调", "特快", "动车", "高铁" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, array);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// position 就是选中的条目,从0开始
String zheng = getResources().getStringArray(R.array.select)[position];//这种方式是把数值放在xml中
//直接从数组中取得用 String zheng = array[position]
Toast.makeText(getBaseContext(), zheng, Toast.LENGTH_SHORT)
.show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// 从没触发过
Log.e("TAG", "------------->>没有选择");
}
});
}
}
//xml中的配置
<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"
tools:context="com.example.lesson7_spinner.MainActivity" >
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
values中的strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Lesson7_Spinner</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string-array name="select">
<item>结婚证</item>
<item>身份证</item>
<item>军官证</item>
<item>单身证</item>
</string-array>
</resources>
ListView列表视图
ListView是Android中最重要的一种视图,基本上是个软件基本都会使用ListView,它以垂直列
表形式列出需要显示的列表,只有通过Adapter才可以把列表中的数据映射到ListView中。
列表的显示需要三个元素:
ListVeiw 用来展示列表的View。
适配器用来把数据映射到ListView上的中介。
数据具体的将被映射的字符串,图片,或者基本组件
XML配置:
1.
实例图如下:
public class MainActivity extends Activity {
String[] names = { "范冰冰", "李晨", "王宝强", "小泽玛利亚", "吴京" };
String[] contents = {
"简介:范冰冰,1981年9月16日生于山东青岛,华语影视女演员、歌手、制片人。1996年参演电视剧《女强人》。1998年主演电视剧《还珠格格》系列成名,2001年起投身大银幕。",
"简介:李晨,1978年11月24日出生于北京市,中国内地影视男演员、监制、赛车手,毕业于北京群星艺术学院。",
"王宝强,1984年5月29日出生于河北省邢台市,中国内地男演员、导演。王宝强6岁开始练习武术,8岁在嵩山少林寺做俗家弟子。2003年,凭借剧情片《盲井》获得第40届台湾电影金马奖最佳新演员奖[1-2] 。2004年,因参演冯小刚执导的剧情片《天下无贼》而获得关注。",
"简介:小泽玛利亚(日语:小澤マリア、おざわ まりあ,英语:Ozawa Maria,1986年1月8日-)日本AV女优,出生于日本北海道,混血儿(父亲是法裔加拿大人,母亲是日本人),拥有欧洲人的面容和东方人的娇小体格。",
"姓名:吴京生日:1974年04月03日职业:演员,导演简介:吴京,1974年04月3日出生于北京,中国内地演员,导演。毕业于北京体育大学。1989年进入北京市武术队" };
int[] ids = { R.drawable.fbb, R.drawable.lichen, R.drawable.wangbaoqiang,R.drawable.xz,R.drawable.wj };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv = (ListView) findViewById(R.id.lv);
//适配器
List<HashMap<String, Object>> list = new ArrayList<HashMap<String,Object>>();
final List<Article> list2 = new ArrayList<MainActivity.Article>();
for (int i = 0; i < 5; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("img", ids[i]);
map.put("name", names[i]);
map.put("content", contents[i]);
list.add(map);
list2.add(new Article(ids[i],names[i] , contents[i]));
}
MyBaseAdapter2 adapter = new MyBaseAdapter2(this,list2);
lv.setAdapter(adapter);
}
public static class Article {
String name;
String content;
int id;
@Override
public String toString() {
return "int="+ id +",name=" + name + ", content=" + content + "]";
}
public Article(int id,String name, String content) {
super();
this.id = id;
this.name = name;
this.content = content;
}
}
}
//自己写的一个适配器
public class MyBaseAdapter2 extends BaseAdapter {
private Context context;
private List<Article> list;
public MyBaseAdapter2(Context context, List<Article> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list == null ? 0 : list.size();
}
@Override
public Article getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = View.inflate(context, R.layout.item_layout, null);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else
holder = (ViewHolder) convertView.getTag();
holder.setData(list.get(position));
return convertView;
}
// 对于一个较复杂的布局,组件比较多
class ViewHolder// 保存的是所有的布局上的组件
{
ImageView img;
TextView name;
TextView content;
public ViewHolder(View convertView) {
img = (ImageView) convertView.findViewById(R.id.img);
name = (TextView) convertView.findViewById(R.id.text1);
content = (TextView) convertView.findViewById(R.id.text2);
// convertView.setTag(this);
}
public void setData(Article a) {
img.setImageResource(a.id);
name.setText(a.name);
content.setText(a.content);
}
}
}
//主xml
<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="com.xykj.id05_10_11work7baseadapter.MainActivity" >
<ListView
android:id="@+id/lv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
></ListView>
</RelativeLayout>
//显示样式的xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/img"
android:src="@drawable/ic_launcher"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_toRightOf="@id/img"
android:padding="10dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text1"
android:text="名字"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text2"
android:text="简介"/>
</LinearLayout>
</RelativeLayout>
GridView网格视图
GridView网格视图是按照行,列分布的方式来显示多个组件,通常用于显示图片或是图标等,在使
用网格视图时,首先需要要在屏幕上添加GridView组件。
常用属性:
1. android:columnWidth 用于设置列的宽度
2. android:gravity 用于设置对齐方式
3. android:horizontalSpacing 用于设置各元素之间的水平间距
4. android:numColumns 用于设置列数
5. android:stretchMode 用于设置拉伸模式,其中属性值可以是
6. //none(不拉伸),
7. //spacingWidth(仅拉伸元素之间的间距),
8. //columnWidth(仅拉伸表格元素本身)或
9. //spacingWidthUniform(表格元素本身,元素之间的间距一起拉伸)
10. android:verticalSpacing 用于设置各元素之间的垂直间距
GridView与ListView一样,都需要通过Adapter来提供显示的数据,ListView可以使用android:entries 来得到数据,但GridView不可以,必须通过适配器来为其添加数据。
GridView的事件和ListView一样,都是设
置 setOnItemClickListener(OnItemClickListener listener);
示例图如下:
public class MainActivity extends Activity {
GridView gr;
int[] ids = { R.drawable.p01, R.drawable.p02, R.drawable.p03,
R.drawable.p04, R.drawable.p05, R.drawable.p06, R.drawable.p07,
R.drawable.p08, R.drawable.p09, R.drawable.p10, R.drawable.p11,
R.drawable.p12 };//图片需要自己导入drawable目录下
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//这是用自己的布局
setContentView(R.layout.activity_main);
gr = (GridView) findViewById(R.id.gr);
List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < 12; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("img1", ids[i]);
data.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(this, data,
R.layout.item_star, new String[] { "img1" },
new int[] { R.id.img1 });
//spinner.setAdapter(adapter);
gr.setAdapter(adapter);
gr.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
final ImageView iv = (ImageView) findViewById(R.id.img2);
if (iv==null) {
Toast.makeText(MainActivity.this, "xuanzhongl"+position, Toast.LENGTH_SHORT).show();
}else {
iv.setImageResource(ids[position]);
}
}
});
}
}
//主xml
<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:orientation="vertical"
>
<GridView
android:numColumns="4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/gr" />
<ImageView
android:id="@+id/img2"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
//显示样式的xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:id="@+id/img1"
android:stretchMode="columnWidth"
android:layout_width="80dp"
android:layout_height="80dp" />
</LinearLayout>