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