Android日期选择及下拉列表Spinner控件的使用

很多安卓应用都有日期选择以及下拉列表的功能,具体就是下面图示的效果
在这里插入图片描述在这里插入图片描述在这里插入图片描述
具体代码实现如下
先写布局文件xml,style就不一一列举了,根据自己的需求写就好

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/LinearLayout1">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp">
        <TextView
            style="@style/TongjiTitle"
            android:text="添加新账"/>
    </LinearLayout>
    <LinearLayout
        android:layout_marginTop="5dp"
        style="@style/LinearLayout2">
        <TextView
            style="@style/addTextView"
            android:drawableRight="@mipmap/riqi"/>
        <EditText
            android:id="@+id/et_date"
            style="@style/addEditText"/>
        <TextView
            style="@style/addTextView"
            android:drawableRight="@mipmap/kinds"/>
        <Spinner
            android:id="@+id/spinner1"
            style="@style/addEditText"/>
    </LinearLayout>
    <LinearLayout
        android:layout_marginTop="5dp"
        style="@style/LinearLayout2">
        <TextView
            style="@style/addTextView"
            android:drawableRight="@mipmap/money"/>
        <EditText
            android:id="@+id/et_money"
            style="@style/addEditText"/>
        <TextView
            style="@style/addTextView"
            android:drawableRight="@mipmap/text"/>
        <EditText
            android:id="@+id/et_text"
            style="@style/addEditText"/>
    </LinearLayout>
    <LinearLayout
        style="@style/LinearLayout2"
        android:gravity="center">
        <Button
            android:id="@+id/btn_concel"
            style="@style/addButton"
            android:text="取消"/>
        <TextView
            android:layout_width="15dp"
            android:layout_height="60dp" />
        <Button
            android:id="@+id/btn_add"
            style="@style/addButton"
            android:text="确认添加"/>
    </LinearLayout>


</LinearLayout>

接下来是activity具体实现
我是在继承Fragment的类写的,所以写在onCreateView方法里,如果是在继承AppCompatActivity的类中,则直接写在onCreate方法里就好。区别就是onCreateView中的findViewById前需要加上你定义的View,在使用 适配器ArrayAdapter时第一个参数不能用this,而要用getActivity(),这个很重要,我纠结了好久才解决。

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.addfragment, container, false);
        et_date=(EditText)rootView.findViewById(R.id.et_date);
        et_money=(EditText)rootView.findViewById(R.id.et_money);
        et_text=(EditText)rootView.findViewById(R.id.et_text);
        btn_add=(Button)rootView.findViewById(R.id.btn_add);
        btn_cancel=(Button)rootView.findViewById(R.id.btn_concel);
        dbOpenHelper=new MyDBOpenHelper(getActivity().getApplicationContext());
        //设置选择日期
        dateFormatter = new SimpleDateFormat("MM月dd日");//这里可以设置日期的格式,如果是年月日则改为yyyy年MM月dd日
        createDate= Calendar.getInstance();
        createDate.setTimeInMillis(System.currentTimeMillis());
        et_date.setText(dateFormatter.format(new Date(createDate.getTimeInMillis())));//把当前系统日期显示在TextView中,如果需要不显示注释掉即可
        et_date.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker datePicker, int year, int month, int day) {
                        createDate.set(year, month, day);
                        et_date.setText(dateFormatter.format(new Date(createDate.getTimeInMillis())));
                    }
                }, createDate.get(Calendar.YEAR), createDate.get(Calendar.MONTH), createDate.get(Calendar.DAY_OF_MONTH))
                        .show();
            }
        });

        List<String> list = new ArrayList<String>();
        list.add("零花");
        list.add("吃饭");
        list.add("日常");
        list.add("学习");
        list.add("饭卡");
        //第一项也就是显示的为零花,如果不设置初始值,则第一项可直接设置为空list.add("");或者是常用的list.add("请选择类型");
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item,list);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        final Spinner sp=(Spinner)rootView.findViewById(R.id.spinner1);
        sp.setAdapter(adapter);

获取下拉列表框选中的值,我常用的方法如下,提取出选中项内容后就可以根据activity所需做相应处理了。

Spring spr=sp.getSelectedItem().toString();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值