android实现多列显示的下拉列表框-Spinner
来源:互联网 发布:淘宝卖家插件 编辑:程序博客网 时间:2024/04/25 09:33
严格来说,这并不是一个下拉列表,只不过实现的效果很像是下拉列表
实现原理:
该下拉列表其实是一个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 MyAdapterextends 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实现多列显示的下拉列表框-Spinner
- android实现多列显示的下拉列表框-Spinner
- Android-Spinner下拉列表显示
- Android-下拉列表框Spinner的使用
- android自定义Spinner下拉菜单和AutoCompleteTextView自动显示的(下拉列表框)样式
- android自定义Spinner下拉菜单和AutoCompleteTextView自动显示的(下拉列表框)样式
- Android实现三级联动下拉框 下拉列表spinner
- Android实现三级联动下拉框 下拉列表spinner
- Android实现三级联动下拉框 下拉列表spinner
- Android实现三级联动下拉框 下拉列表spinner
- Android实现三级联动下拉框 下拉列表spinner
- Android实现三级联动下拉框 下拉列表spinner
- Android实现三级联动下拉框 下拉列表spinner
- Android--下拉列表框(Spinner)
- Spinner显示下拉列表
- Android实现三级联动下拉框 下拉列表spinner的实例代码
- Android实现三级联动下拉框 下拉列表spinner的实例代码
- Android实现三级联动下拉框 下拉列表spinner的实例
- Ios左右菜单PPRevealSideviewController使用的一些心得
- 1-100最小公倍数问题(C++数组模拟大数版本)
- 感受
- 程序员:伤不起的三十岁
- Android学习整理-常见控件调用方法
- android实现多列显示的下拉列表框-Spinner
- 程序人生之我们的故事:十年如歌(4)
- flume 日志收集单节点
- 操作系统模拟页面调度算法(OPT、FIFO、LRU)演示(vc6.0调试通过)
- Java学习之Iterator(迭代器)的一般用法
- CMFCPropertyGridCtrl响应消息
- 评周鸿祎360反垄断案和扣扣保镖案PK国家机器
- 清晰的KMP匹配算法
- DWR+Struts结合的使用