Spinner使用自定义适配器
2015-10-29 23:19
344 查看
本篇博客的源码免费下载:点击打开链接
SpinnerTest使用自定义适配器
先看一下效果图:
两张效果不一样是因为:
![](https://img-blog.csdn.net/20151029232531070?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20151029232407965?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20151029232422720?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
①:定义每一个Item的布局文件
<?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/spinner_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/spinner_item2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
②:建立Person类:
package com.eulav.bean;
public class Person {
private String name;
private String text;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Person(String name,String text){
super();
this.name= name;
this.text=text;
}
}
③:创建MyAdapter继承与BaseAdapter,进行适配:
package com.eulav.spinnertest;
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.eulav.bean.Person;
public class MyAdapter extends BaseAdapter {
private List<Person> mlist;
Context mcontex;
public MyAdapter (Context pcontext,List<Person> lperson){
this.mlist = lperson;
this.mcontex = pcontext;
};
@Override
public int getCount() {
// TODO Auto-generated method stub
return mlist.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(mcontex);
ItemHolder itemholder=null;
if(itemholder == null){
itemholder = new ItemHolder();
convertView = inflater.inflate(R.layout.spinner_item, null);
//得到各个控件的对象
itemholder.tv1 = (TextView) convertView.findViewById(R.id.spinner_item);
itemholder.tv2 = (TextView) convertView.findViewById(R.id.spinner_item2);
convertView.setTag(itemholder);
}else{
itemholder = (ItemHolder)convertView.getTag();
}
itemholder.tv1.setText(mlist.get(position).getName());
itemholder.tv2.setText(mlist.get(position).getText());
return convertView;
}
}
class ItemHolder{
TextView tv1;
TextView tv2;
}
④:在创建好的SpinnerActivity中加入如下代码:
<pre name="code" class="java"><span style="color:#404040;">package com.eulav.spinnertest;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Spinner;
import com.eulav.bean.Person;
public class SpinnerMainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spinner_main);
Spinner spinner = (Spinner) findViewById(R.id.spinner);//获得组件
</span><span style="color:#ff0000;"> List<Person> person = new ArrayList<Person>();
person.add(new Person("zhangvalue","我是就是我"));
person.add(new Person("叶良辰","良晨必有厚报"));
person.add(new Person("赵日天", "有本事你来呀"));
person.add(new Person("杨顶天","wedf"));</span><span style="color:#404040;">
</span><span style="color:#ff0000;"> MyAdapter myadapter = new MyAdapter(this, person);
spinner.setAdapter(myadapter);//绑定adapter到spinner控件上</span><span style="color:#404040;">
}
}
</span>
SpinnerTest使用自定义适配器
先看一下效果图:
两张效果不一样是因为:
①:定义每一个Item的布局文件
<?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/spinner_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/spinner_item2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
②:建立Person类:
package com.eulav.bean;
public class Person {
private String name;
private String text;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Person(String name,String text){
super();
this.name= name;
this.text=text;
}
}
③:创建MyAdapter继承与BaseAdapter,进行适配:
package com.eulav.spinnertest;
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.eulav.bean.Person;
public class MyAdapter extends BaseAdapter {
private List<Person> mlist;
Context mcontex;
public MyAdapter (Context pcontext,List<Person> lperson){
this.mlist = lperson;
this.mcontex = pcontext;
};
@Override
public int getCount() {
// TODO Auto-generated method stub
return mlist.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(mcontex);
ItemHolder itemholder=null;
if(itemholder == null){
itemholder = new ItemHolder();
convertView = inflater.inflate(R.layout.spinner_item, null);
//得到各个控件的对象
itemholder.tv1 = (TextView) convertView.findViewById(R.id.spinner_item);
itemholder.tv2 = (TextView) convertView.findViewById(R.id.spinner_item2);
convertView.setTag(itemholder);
}else{
itemholder = (ItemHolder)convertView.getTag();
}
itemholder.tv1.setText(mlist.get(position).getName());
itemholder.tv2.setText(mlist.get(position).getText());
return convertView;
}
}
class ItemHolder{
TextView tv1;
TextView tv2;
}
④:在创建好的SpinnerActivity中加入如下代码:
<pre name="code" class="java"><span style="color:#404040;">package com.eulav.spinnertest;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Spinner;
import com.eulav.bean.Person;
public class SpinnerMainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spinner_main);
Spinner spinner = (Spinner) findViewById(R.id.spinner);//获得组件
</span><span style="color:#ff0000;"> List<Person> person = new ArrayList<Person>();
person.add(new Person("zhangvalue","我是就是我"));
person.add(new Person("叶良辰","良晨必有厚报"));
person.add(new Person("赵日天", "有本事你来呀"));
person.add(new Person("杨顶天","wedf"));</span><span style="color:#404040;">
</span><span style="color:#ff0000;"> MyAdapter myadapter = new MyAdapter(this, person);
spinner.setAdapter(myadapter);//绑定adapter到spinner控件上</span><span style="color:#404040;">
}
}
</span>
相关文章推荐
- php设计模式 Adapter(适配器模式)
- ListView Adapter优化 实例
- Android下拉列表(Spinner)效果(使用C#和Java分别实现)
- Adapter实现ListView带多选框等状态的自定义控件的注意事项
- 自定义Adapter并通过布局泵LayoutInflater抓取layout模板编辑每一个item实现思路
- Android中的Adapter简单介绍
- ASP.NET的适配器设计模式(Adapter)应用详解
- Android中Spinner控件之键值对用法实例分析
- ListView的Adapter使用(绑定数据) 之 自定义每一项的布局去绑定数据
- android开发中ListView与Adapter使用要点介绍
- Android自定义Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android控件之Spinner用法实例分析
- ListView的Adapter使用 之 初学ArrayAdapter String
- Generic adapter class in Python
- Android AdapterView 源码分析以及其相关回收机制的分析
- 有关ListView的三种适配器类型
- Spinner的总结
- 从应用框架角度看ListView与Adapter类别
- android.widget.Spinner
- Spinner 控件的使用day4