Android编程实现多列显示的下拉列表框Spinner功能示例
时间:2019-03-30
本文章向大家介绍Android编程实现多列显示的下拉列表框Spinner功能示例,主要包括Android编程实现多列显示的下拉列表框Spinner功能示例使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文实例讲述了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. */ @Override public 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程序设计有所帮助。
- 【防护】如何阻止SELECT * 语句
- COGS 862. 二进制数01串【dp+经典二分+字符串】
- 【AlphaGo Zero 核心技术-深度强化学习教程代码实战03】编写通用的格子世界环境类
- 冒泡排序简单操作模版及实例分析
- COGS 1299. bplusa【听说比a+b还要水的大水题???】
- python学习笔记之运算符
- 锐捷网络NBR部分路由器cookie欺骗权限绕过
- 手写快排模版
- COGS 68. [NOIP2005] 采药【01背包复习】
- UESTC 30 &&HDU 2544最短路【Floyd求解裸题】
- 我的第一个网页制作:Hello World!
- UESTC 1584 Washi与Sonochi的约定【树状数组裸题+排序】
- Hyperledger - 超级账本项目:简介,安装,案例
- 我的第三个网页制作:b、i、s、u、sub、sup标签的使用
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- php连接mysql数据库最简单的实现方法
- 解决laravel id非自增 模型取回为0 的问题
- PHP7.0连接DB操作实例分析【基于mysqli】
- Laravel获取当前请求的控制器和方法以及中间件的例子
- laravel中数据显示方法(默认值和下拉option默认选中)
- laravel请求参数校验方法
- ThinkPHP 5.x远程命令执行漏洞复现
- 关于php开启错误提示的总结
- php创建类并调用的实例方法
- php异常处理捕获错误整理
- 可视化IDE的探索之路
- php模式设计之观察者模式应用实例分析
- python进程与线程小结实例分析
- php引用和拷贝的区别知识点总结
- PHP 观察者模式深入理解与应用分析