时间:2021-05-20
本文实例讲述了Android编程实现多列显示的下拉列表框Spinner功能。分享给大家供大家参考,具体如下:
先上张效果图:
严格来说,这并不是一个下拉列表,只不过实现的效果很像是下拉列表
实现原理:
该下拉列表其实是一个AlertDialog.Builder,给它设置了一个以LinearLayout布局的View。该View内使用了一个GridView组件,
代码:
package yyy.testandroid9;private Intent intent;private int index = 0;private SharedPreferences preferences;private File file;private Spinner spinner;private GridView gridView;private LinearLayout layout;private Builder builder;private AlertDialog dialog;private MyAdapter adapter;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LayoutInflater inflater = LayoutInflater.from(this); layout = (LinearLayout) inflater.inflate(R.layout.bank_grid, null); gridView = (GridView) layout.findViewById(R.id.grid); adapter = new MyAdapter(this); gridView.setAdapter(adapter); button1 = (Button) findViewById(R.id.button1); button2 = (Button) findViewById(R.id.button2); textView = (TextView) findViewById(R.id.textview); builder = new Builder(TestAndroid9Activity.this); builder.setView(layout); button1.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { // TODO Auto-generated method stub if(dialog == null){ dialog = builder.show(); } dialog.show(); } }); gridView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { // TODO Auto-generated method stub button1.setText(getResources().getStringArray(R.array.city)[position]); dialog.dismiss(); adapter.map.put(index, false); adapter.map.put(position, true); index = position; adapter.notifyDataSetChanged(); } });}private class MyAdapter extends BaseAdapter{ private Context context; private String[] citys; private LayoutInflater inflater; public HashMap<Integer, Boolean> map; public MyAdapter(Context context) { super(); this.context = context; citys = context.getResources().getStringArray(R.array.city); inflater = LayoutInflater.from(context); map = new HashMap<Integer, Boolean>(); for(int i=0;i<citys.length;i++){ map.put(i, false); } } public int getCount() { // TODO Auto-generated method stub return citys.length; } public Object getItem(int position) { // TODO Auto-generated method stub return null; } public long getItemId(int position) { // TODO Auto-generated method stub return position; } public View getView(int position, View view, ViewGroup parent) { // TODO Auto-generated method stub if(view == null){ view = inflater.inflate(R.layout.bank_item, null); } TextView textView = (TextView) view.findViewById(R.id.list_text); RadioButton radioButton = (RadioButton) view.findViewById(R.id.radiobutton); radioButton.setChecked(map.get(position)); textView.setText(citys[position]); return view; }}bank_grid.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:padding="20dp" android:background="#ffffff" android:id="@+id/grid_layout"> <GridView android:id="@+id/grid" android:layout_width="fill_parent" android:layout_height="fill_parent" android:verticalSpacing="20px" android:horizontalSpacing="10px" android:numColumns="4" android:scrollbars="vertical" android:layout_margin="10dp"/></LinearLayout>bank_item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff" > <RadioButton android:id="@+id/radiobutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="15dp" android:focusable="false" android:clickable="false" android:focusableInTouchMode="false" /> <TextView android:id="@+id/list_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000000" android:layout_gravity="center_vertical"/></LinearLayout>更多关于Android相关内容感兴趣的读者可查看本站专题:《Android视图View技巧总结》、《Android布局layout技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
spinner组件有点类型于HTML中的下拉框的样子,让用户每次从下拉框中选取一个,本文为大家分享了Android下拉列表spinner的具体实现代码,供大家参
ComboBox(下拉列表框)ComboBox(下拉列表框)常用属性:valueField:基础数据值名称绑定到该下拉列表框。—提交值textField:基础数
项目要实现这样的一个功能(如下图所示):选择左边下拉列表框中的选项,点击添加按钮,把选择的选项移动到右边的下拉列表框中,同样的选择右边的选项,点击删除按钮,即把
使用div制作蒙版或模拟弹出窗口,但在IE6下,当div下方有下拉列表框select元素的时候,下拉列表框会划破div显示在div之上,不论z-index设为何
AxureRP8设计软件有个元件----下拉列表框,下拉列表框数据源可以单条添加,也可以批量添加;双击打开编辑列表窗口,可以多条添加记录。下面利用一个实例实现这