本文主要是介绍使用列表组件实现下拉列表,通讯录列表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
列表组件包含下拉列表框(Spinner)和列表视图(ListView)。
图1 列表组件继承关系图
从上图中可以看出,Spinner和ListView都继承自ViewGroup,所以都属于View容器;都继承自AdapterView,所以都可以显示多个列表项。
1 下拉列表框
<Spinner>基本语法格式如下:
<Spinner
android:entries="@array/数组名"
android:prompt="@string/info"
其他属性
>
</Spinner>
android:entries为可选属性,用于指定列表项;android:prompt为可选属性,用于指定下拉列表框的标题。
Spinner:实现下拉列表
MainActivity.java
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Spinner spinner = (Spinner) findViewById(R.id.spinner);// 为下拉列表创建监听事件spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> parent, View view, int position, long id) {String result = parent.getItemAtPosition(position).toString();Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show();}@Overridepublic void onNothingSelected(AdapterView<?> parent) {}});}
}
https://github.com/hanyuhang-hz/android-demos
2 列表视图
<ListView>基本语法格式如下:
<ListView
属性列表
>
</ListView>
ListView支持的常用xml属性如表2:
xml属性 | 描述 |
android:divider | 为列表视图设置分隔条 |
android:dividerHeight | 设置分隔条的高度 |
android:entries | 通过数组资源为ListView指定列表项 |
android:footerDividersEnabled | 设置是否在footer View(底部视图)之前绘制分隔条 |
android:headerDividersEnabled | 设置是否在header View(头部视图)之后绘制分隔条 |
表2 ListView支持的常用xml属性
ListView:实现通讯录列表
MainActivity.java
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView listview = (ListView) findViewById(R.id.listview);int[] imageId = new int[]{R.mipmap.img01, R.mipmap.img02, R.mipmap.img03,R.mipmap.img04, R.mipmap.img05, R.mipmap.img06,R.mipmap.img07, R.mipmap.img08, R.mipmap.img09,};String[] title = new String[]{"刘一", "陈二", "张三", "李四", "王五","赵六", "孙七", "周八", "吴九"};List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();for (int i = 0; i < imageId.length; i++) {Map<String, Object> map = new HashMap<String, Object>();map.put("image", imageId[i]);map.put("名字", title[i]);listItems.add(map);}SimpleAdapter adapter = new SimpleAdapter(this, listItems,R.layout.main, new String[] { "名字", "image" }, new int[] {R.id.title, R.id.image });// 将适配器与ListView关联listview.setAdapter(adapter);listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {Map<String, Object> map = ( Map<String, Object> )parent.getItemAtPosition(position);Toast.makeText(MainActivity.this,map.get("名字").toString(),Toast.LENGTH_SHORT).show();}});}
}
GitHub - hanyuhang-hz/android-demos
这篇关于使用列表组件实现下拉列表,通讯录列表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!