ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效果
ArrayAdapter;的数据可以是数组或者是队列
// 获得下拉框对象
AutoCompleteTextView textview = (AutoCompleteTextView) this .findViewById(R.id.textView); //下拉框对象需要一个数据源,使用list队列添加数据 String[] array = { "设置", "wlan", "移动网络", "声音","显示","存储","电池","引用程序" }; /*第一个:上下文对象 第二个:布局的样式 第三个:数据*/ ArrayAdapter<String> arrayAdapter =new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,array ); //设置适配器 textview.setAdapter(arrayAdapter);
SimpleAdapter;可以有图片和文字,一时难以理解
// 参数1:上下文
// 参数2:图片和文字数据
// 参数3:用来显示List中一条数据的布局文件
// 参数4:HashMap中K的数组
// 参数5:元素的布局文件中的视图id
SimpleAdapter adapter = new SimpleAdapter(this,list,R.layout.grid_item,from,to);
得到参数二;
// 获得数据源 ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>(); //图片资源 static int[] imgs = { R.drawable.a1, R.drawable.a2, R.drawable.a3, R.drawable.a4, R.drawable.a5, R.drawable.a6, R.drawable.a7, R.drawable.a8, R.drawable.a9 }; //遍历图片 for(int i=0;i<imgs.length;i++){ HashMap<String, Object> map =new HashMap<String, Object>(); map.put("k1", imgs[i]); map.put("k2", "程序"+i); list.add(map); }
参数三; 用来显示List中一条数据的布局文件
重新定义一个布局文件,
grid_item.xml
<ImageView android:id="@+id/img" android:layout_width="50dp" android:layout_height="50dp" /> <TextView android:id="@+id/text" android:layout_width="50dp" android:layout_height="wrap_content" android:gravity="center_horizontal" />
参数四:获取HashMap中K的数组 就是k1和k2
String[] from={"k1","k2"};
参数五:获取布局文件的id
int[] to = { R.id.img, R.id.text };
由于布局文件已经在SimpleAdapter创建时创建了对象所以直接R.id.img, R.id.text 就获取到grid_item.xml中的id