Android View 滚轮控件LoopView+自定义Dialog [时间地域选择器] Picker

本文介绍如何使用LoopView实现Android界面的自定义时间地域选择器,通过自定义View提升性能,避免数据源过大导致的问题。提供源码链接及地域选择器的数据结构说明,鼓励读者进行定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



发现了一些好的东西: 

https://github.com/weidongjian/androidWheelView


曾经找到过 WheelView。当时江湖救急,直接用了。数据源太大的话会导致性能降低。
当时有吐槽如果有使用自定义view或者继承ListView、RecyclerView的就好。
今日找到了使用自定义view方法写的。



红色为源码, 蓝色为哥写的对应扩展。
核心源码为LoopView,本来想看看实现原理方法,奈何源码被下了毒。
不过值得庆幸的是核心api还在




有了这些东西那么就可以自己进行一些定制了。



public class DataPickerDialog extends Dialog {

    private Params params;

    public DataPickerDialog(Context context, int themeResId) {
        super(context, themeResId);
    }

    private void setParams(DataPickerDialog.Params params) {
        this.params = params;
    }

    public interface OnDataSelectedListener {
        void onDataSelected(String itemValue);
    }

    private static final class Params {
        private boolean shadow = true;
        private boolean canCancel = true;
        private LoopView loopData;
        private String title; 
        private String unit;
        private int initSelection;
        private OnDataSelectedListener callback;
        private final List<String> dataList = new ArrayList<>();
    }

    public static class Builder {
        private final Context context;
        private final DataPickerDialog.Params params;

        public Builder(Context context) {
            this.context = context;
            params = new DataPickerDialog.Params();
        }

        private final String getCurrDateValue() {
            return params.loopData.getCurrentItemValue();
        }

        public Builder setData(List<String
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值