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

android中Spinner的使用方法

2014-08-04 23:10 591 查看
一、采用xml文件中的string-array定义

<string-array name="test_string_array">
<item>AA</item>
<item>BB</item>
<item>CC</item>
</string-array>

对应的java类中部分
spinner1 = (Spinner)findViewById(R.id.spinner1);
adapter = ArrayAdapter.createFromResource(this,R.array.test_string_array,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter);

二、采用List集合方式
List<CharSequence> list = new ArrayList<CharSequence>();
list.add("xiaoyezi");
list.add("xiaozhengzi");
adapter = new ArrayAdapter<CharSequence>(this,
R.layout.adapter_item,R.id.itemTextView1,list);
spinner1.setPrompt("请选择");
spinner1.setAdapter(adapter);

三、自定义方式
1、自定义显示的方式 (adapter_item.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"
android:orientation="horizontal" >

<TextView
android:id="@+id/itemTextView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

<TextView
android:id="@+id/itemTextView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

</LinearLayout>

2、自定义显示的类Person
package com.example.po;

public class Person {

private int age;
private String name;

public Person(int age,String name) {
this.age = age;
this.name = name;
}

public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

@Override
public String toString() {
return this.age+"-->"+this.name;
}

}


3、PersonAdapter类
package com.example.adapter;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.example.po.Person;

public class PersonAdapter extends BaseAdapter{

private List<Person> persons;
private Context context;

public PersonAdapter(Context context,List<Person> persons){
this.context = context;
this.persons = persons;
}

@Override
public int getCount() {
if(persons!=null)
return persons.size();
return 0;
}

@Override
public Object getItem(int position) {
if(persons!=null&&!persons.isEmpty())
return persons.get(position);
return null;
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View view, ViewGroup viewGroup) {
LayoutInflater layoutInflater = LayoutInflater.from(context);
view = layoutInflater.inflate(R.layout.adapter_item,null);
if(view!=null&&persons!=null){
TextView textView1 = (TextView)view.findViewById(R.id.itemTextView1);
TextView textView2 = (TextView)view.findViewById(R.id.itemTextView2);
String age = persons.get(position).getAge()+"";
String name = persons.get(position).getName();
textView1.setText(age);
textView2.setText(name);
}
return view;
}

}


4、对应的MainActivity类
List<Person> persons = new ArrayList<Person>();
persons.add(new Person(1,"叶胜华"));
persons.add(new Person(2,"郑苏云"));
PersonAdapter personAdapter = new PersonAdapter(this, persons);
spinner1.setAdapter(personAdapter);

四、监听Spinner
1、创建监听对象

private OnItemSelectedListener onItemSelLis = new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position,long id) {
Log.i("time", view.getId()+"-->"+R.layout.activity_main+"-->"+id);
Log.i("time",""+(view.getId() == R.id.spinner1));
Log.i("time",adapterView.getItemAtPosition(position).toString());
Log.i("time",""+position+"-->"+adapterView.getItemIdAtPosition(position));
}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
Log.i("time","nothing selected");

}
};2、注册监听
spinner1.setOnItemSelectedListener(onItemSelLis);

五、整体测试代码
package com.example.adapter;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

import com.example.po.Person;

public class MainActivity extends Activity {

private Spinner spinner1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

spinner1 = (Spinner)findViewById(R.id.spinner1);
adapter = ArrayAdapter.createFromResource(this,R.array.test_string_array,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter);

List<Person> persons = new ArrayList<Person>();
persons.add(new Person(1,"叶胜华"));
persons.add(new Person(2,"郑苏云"));
PersonAdapter personAdapter = new PersonAdapter(this, persons);
spinner1.setAdapter(personAdapter);

spinner1.setPrompt("请选择"); //设置默认显示标题内容
spinner1.setOnItemSelectedListener(onItemSelLis);

List<CharSequence> list = new ArrayList<CharSequence>();
list.add("xiaoyezi");
list.add("xiaozhengzi");
adapter = new ArrayAdapter<CharSequence>(this,
R.layout.adapter_item,R.id.itemTextView1,list);
spinner1.setPrompt("请选择");
spinner1.setAdapter(adapter);
}

private ArrayAdapter<CharSequence> adapter = null;

private OnItemSelectedListener onItemSelLis = new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position,long id) {
Log.i("time", view.getId()+"-->"+R.layout.activity_main+"-->"+id);
Log.i("time",""+(view.getId() == R.id.spinner1));
Log.i("time",adapterView.getItemAtPosition(position).toString());
Log.i("time",""+position+"-->"+adapterView.getItemIdAtPosition(position));
}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
Log.i("time","nothing selected");

}
};

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

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