Spinner与适配器模式总结

今天开始编辑我的第一篇博客。

---------------------------------------------------------------------------------------------

最近在找安卓开发的实习,可是面试N家公司,迟迟没有合适的机会。索性就自己看着视频教学来学点东西呗。



Spinner

是一个下拉列表,往安卓界面中拖拽一个Spinner控件,在属性中设置android:entries=“@array/spinner_data”

其中spinner_data为在string中设置的数组。数组中由固定写好的值。此时便可在界面设置好下拉列表。

<Spinner
        android:id="@+id/spinner1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="17dp"
        android:entries="@array/spinner_data"/>
当然为了用户体验好,可以设置 android:spinnerMode="dialog"属性,可以使下拉列表有弹出框。


适配器:

适配器主要负责从数据源中抓取数据,传向各个UI组件。主要的适配器adapter由ArrayAdapter和BaseAdapter。 即适配器负责从某个数据源比如数组中得到数据传向Spinner,显示在界面上。

首先定义数据源

private String[] ss=new String[]{
		"猫咪",
		"老虎",
		"狮子",
			
	};

数据源2

private List<String> list=new ArrayList<String>();
list.add("百度");
		list.add("腾讯");
		list.add("阿里巴巴");

其次定义一个类Myadapter继承与抽象类BaseAdapter,抽象方法有四个。

private class Myadapter extends BaseAdapter{

	@Override
	public int getCount</span>() {
		// TODO Auto-generated method stub
		return ss.length;
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public View getView</span>(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		TextView textView=new TextView(MainActivity.this);
		textView.setText(ss[position]);
		
		return textView;
	}
然后再主函数中

Spinner spinner=(Spinner) findViewById(R.id.spinner1);
		BaseAdapter adapter=new Myadapter();
		spinner.setAdapter(adapter);

先找到Spinner控件,并且实例化new一个adapter。通过adapter适配器来抓取数据源ss中的数据。

BaseAdapter适配器最重要的方法是getcount()以及getview()方法。前者返回数据源的长度,后者进行一些操作。



当然可以使用更简单的ArrayAdaper适配器。

Spinner spinner=(Spinner) findViewById(R.id.spinner1);
		ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,ss);
		spinner.setAdapter(adapter);
通过以上语句,可以直接定位在数组ss中。

欢迎添加QQ956283501,一起讨论交流。












原文地址:https://www.cnblogs.com/lanzhi/p/6467355.html