android多个下拉控件,Android编程实现多列显示的下拉列表框Spinner功能示例

本文实例讲述了Android编程实现多列显示的下拉列表框Spinner功能。分享给大家供大家参考,具体如下:

先上张效果图:

9e4ac956ed27ab680c31e9f13caccd2b.png

严格来说,这并不是一个下拉列表,只不过实现的效果很像是下拉列表

实现原理:

该下拉列表其实是一个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 map;

public MyAdapter(Context context) {

super();

this.context = context;

citys = context.getResources().getStringArray(R.array.city);

inflater = LayoutInflater.from(context);

map = new HashMap();

for(int i=0;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

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical"

android:padding="20dp"

android:background="#ffffff"

android:id="@+id/grid_layout">

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"/>

bank_item.xml

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#ffffff"

>

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"

/>

android:id="@+id/list_text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textColor="#000000"

android:layout_gravity="center_vertical"/>

希望本文所述对大家Android程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值