滚轮弹出选择框

一、效果图



 

 二、主要布局文件

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/tv_provincename"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:layout_width="200dp"
        android:layout_height="38dp"
        android:background="@drawable/edittext_backgroud"
        android:drawableRight="@drawable/title_down"
        android:gravity="center"
        android:hint="请选择省份"
        android:maxLines="1"
        android:paddingLeft="8.5dp"
        android:singleLine="true" />

</RelativeLayout>

 commom_single_list_select.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="vertical" >

    <kankan.wheel.widget.WheelView
        android:id="@+id/select_item_wheel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minWidth="360dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/cancel_btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="取消" />

        <Button
            android:id="@+id/ok_btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="确定" />
    </LinearLayout>

</LinearLayout>

 wheel_list_item_common.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/wheel_item_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="20sp"
        android:textStyle="bold" />

</LinearLayout>

 MainActivity.java

package com.example.wheeltest;

import java.util.ArrayList;
import java.util.List;

import kankan.wheel.widget.WheelView;
import kankan.wheel.widget.adapters.WheelViewAdapter;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.database.DataSetObserver;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.TextView;

public class MainActivity extends Activity {
	
	private View provinceNameAlertView;
	private View provinceNameOkView;
	private View provinceNameCancleView;
	
	private TextView mProvinceTV;
	
	private WheelView provinceNameWheelView;
	
	private AlertDialog mProvinceNameAd;
	
	private WheelViewAdapter provinceAdapter;
	
	private List<ProvinceInfoBean> provinceList;
	
	
	private Context mContext;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		mContext = this;
		setContentView(R.layout.activity_main);
		dataInit();
		viewInit();
	}
	
	private void dataInit(){
		provinceList = new ArrayList<ProvinceInfoBean>();
		ProvinceInfoBean bean1 = new ProvinceInfoBean();
		bean1.setId(1);
		bean1.setName("北京市");
		ProvinceInfoBean bean2 = new ProvinceInfoBean();
		bean2.setId(2);
		bean2.setName("天津市");
		ProvinceInfoBean bean3 = new ProvinceInfoBean();
		bean3.setId(3);
		bean3.setName("上海市");
		ProvinceInfoBean bean4 = new ProvinceInfoBean();
		bean4.setId(4);
		bean4.setName("广东省");
		provinceList.add(bean1);
		provinceList.add(bean2);
		provinceList.add(bean3);
		provinceList.add(bean4);
	}
	
	private void viewInit(){
		mProvinceTV = (TextView) findViewById(R.id.tv_provincename);
		provinceNameAlertView = LayoutInflater.from(mContext).inflate(R.layout.common_single_list_select, null);
		provinceNameWheelView = (WheelView) provinceNameAlertView.findViewById(R.id.select_item_wheel);
		provinceNameOkView = provinceNameAlertView.findViewById(R.id.ok_btn);
		provinceNameCancleView = provinceNameAlertView.findViewById(R.id.cancel_btn);
		mProvinceNameAd = new AlertDialog.Builder(mContext)
							.setTitle("请选择省份")
							.setView(provinceNameAlertView).create();
		
		provinceAdapter = new ProvinceAdapter();
		provinceNameWheelView.setViewAdapter(provinceAdapter);
		
		mProvinceTV.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if(!mProvinceNameAd.isShowing()){
					mProvinceNameAd.show();
				}
			}
		});
		
		
		provinceNameOkView.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if(provinceList != null && !provinceList.isEmpty()){
					int index = provinceNameWheelView.getCurrentItem();
					ProvinceInfoBean bean = provinceList.get(index);
					mProvinceTV.setText(bean.getName());
				}
				if(mProvinceNameAd.isShowing()){
					mProvinceNameAd.dismiss();
				}
			}
		});
		
		provinceNameCancleView.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if(mProvinceNameAd.isShowing()){
					mProvinceNameAd.dismiss();
				}
			}
		});
	}
	
	private final class ProvinceAdapter implements WheelViewAdapter{

		@Override
		public int getItemsCount() {
			// TODO Auto-generated method stub
			return provinceList.size();
		}

		@Override
		public View getItem(int index, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			convertView = LayoutInflater.from(mContext).inflate(R.layout.wheel_list_item_common, null);
			TextView textView = (TextView) convertView.findViewById(R.id.wheel_item_text);
			ProvinceInfoBean bean = provinceList.get(index);
			textView.setText(bean.getName());
			return convertView;
		}

		@Override
		public View getEmptyItem(View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			return null;
		}

		@Override
		public void registerDataSetObserver(DataSetObserver observer) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void unregisterDataSetObserver(DataSetObserver observer) {
			// TODO Auto-generated method stub
			
		}
	}

}

三、需要用到额外的项目包wheel 和 源代码

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值