Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 路加·戴顿车轮视图_Android_Kotlin_Android Custom View - Fatal编程技术网

Android 路加·戴顿车轮视图

Android 路加·戴顿车轮视图,android,kotlin,android-custom-view,Android,Kotlin,Android Custom View,这是我第一次上stack,因为大多数问题的答案都已经有了,但这是Luke Deighton写的WheelView,我在网上找不到太多关于它的信息,所以就在这里 我想做的是将1到12小时的时间列表设置为WheelView 这是我的一个片段 class SetTimeFragment : android.app.Fragment(), TimePresenter.TimePresenterCallback, WheelView.OnWheelItemSelectListener { private

这是我第一次上stack,因为大多数问题的答案都已经有了,但这是Luke Deighton写的
WheelView
,我在网上找不到太多关于它的信息,所以就在这里

我想做的是将1到12小时的时间列表设置为
WheelView

这是我的一个片段

class SetTimeFragment : android.app.Fragment(), TimePresenter.TimePresenterCallback, WheelView.OnWheelItemSelectListener {

private var hours: List<String>? = null
private var days: List<String>? = null
private var minutes: List<String>? = null
private var type: List<String>? = null

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                          savedInstanceState: Bundle?): View? {
    var view: View =inflater.inflate(R.layout.fragment_add_time, container, false)
    TimePresenter(this).setDataForTimeAndDays()
    return view
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    setDayslist(days)
    setHour(hours)
    setMinute(minutes)
    setTimeType(type)
}

override fun onDaysOfWeekSuccess(hours: List<String>?, minutes: List<String>?, type: List<String>?, days: List<String>?) {
    this.days =days
    this.hours =hours
    this.minutes =minutes
    this.type =type
}

fun setDayslist(days: List<String>?){
    rvDays.layoutManager = LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false)
    rvDays.adapter = DaysInWeekAdapter(days)
}

fun setHour(hours: List<String>?){
// the adapter which I am trying to set
    hourWheel.adapter = HoursInDayAdapter(hours)
    hourWheel.setSelectionColor(R.color.white)
}

fun setMinute(minutes: List<String>?){
    minuteWheel.adapter = MinutesInHourAdapter(minutes)
    hourWheel.setSelectionColor(R.color.white)
}

fun setTimeType(type: List<String>?){
    typeWheel.adapter = TimeTypeInDayAdapter(type)
    hourWheel.setSelectionColor(R.color.white)
}

override fun onWheelItemSelected(parent: WheelView?, itemDrawable: Drawable?, pos: Int) {
    }
}


// the adapter set above but in a different class
public class HoursInDayAdapter extends WheelArrayAdapter {
List<String> hours;

public HoursInDayAdapter(List<String> hours) {
    super(hours);
    this.hours = hours;
}

@Override
public Drawable getDrawable(int position) {
    Drawable[] drawable = new Drawable[] {
            createOvalDrawable(),
            new TextDrawable(hours.get(position))
    };
    return new LayerDrawable(drawable);
}

private Drawable createOvalDrawable() {
    ShapeDrawable shapeDrawable = new ShapeDrawable(new OvalShape());
    shapeDrawable.getPaint().setColor(Color.BLUE);
    return shapeDrawable;
}

@Override
public int getCount() {
    return hours.size();
}

}

// the list which I am passing
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
类SetTimeFragment:android.app.Fragment(),TimePresenter.TimePresenterCallback,WheelView.OnWheelItemSelectListener{
专用变量小时数:列表?=null
私有变量天数:列表?=null
私有变量分钟数:列表?=null
私有变量类型:列表?=null
覆盖创建视图(充气机:布局充气机,容器:视图组?,
savedInstanceState:捆绑?:查看{
var视图:视图=充气机。充气(R.layout.fragment\u add\u time,container,false)
TimePresenter(this).setDataForTimeAndDays()
返回视图
}
覆盖已创建的视图(视图:视图,保存状态:捆绑?){
super.onViewCreated(视图,savedInstanceState)
setDayslist(天)
设定小时(小时)
设置分钟(分钟)
setTimeType(类型)
}
覆盖星期一星期成功的乐趣(小时:列表?,分钟:列表?,类型:列表?,天数:列表?){
this.days=天
这个.小时=小时
this.minutes=分钟
this.type=type
}
乐趣设置日期列表(日期:列表?){
rvDays.layoutManager=LinearLayoutManager(活动,LinearLayoutManager.HORIZONTAL,false)
rvDays.adapter=DaysInWeekAdapter(天)
}
乐趣设定小时(小时:列表?){
//我正在尝试设置的适配器
hourWheel.adapter=HoursInDayAdapter(小时)
时轮.设置选择颜色(R.颜色.白色)
}
乐趣设置分钟(分钟:列表?){
minuteWheel.adapter=分钟小时适配器(分钟)
时轮.设置选择颜色(R.颜色.白色)
}
乐趣设置时间类型(类型:列表?){
typeWheel.adapter=TimeTypeInDayAdapter(类型)
时轮.设置选择颜色(R.颜色.白色)
}
覆盖选定的WheelItem(父项:WheelView?,itemDrawable:Drawable?,位置:Int){
}
}
//适配器设置在上面,但在不同的类中
公共类小时数适配器扩展WheelArrayAdapter{
列出时间;
公共小时indayadapter(列表小时数){
超级(小时);
这个.小时=小时;
}
@凌驾
公共可提取getDrawable(内部位置){
可提取[]可提取=新可提取[]{
createOvalDrawable(),
新TextDrawable(小时数获取(职位))
};
返回新图层可绘制(可绘制);
}
私有可绘制createOvalDrawable(){
ShapeDrawable ShapeDrawable=新的ShapeDrawable(新的椭圆形());
shapeDrawable.getPaint().setColor(Color.BLUE);
返回形状可拆卸;
}
@凌驾
public int getCount(){
返回小时数。大小();
}
}
//我通过的名单
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
WheelView
没有显示任何内容,没有错误,出现了
WheelView
但其轮子上没有任何内容,我也尝试过使用一个简单的
WheelAdapter
,该代码主要是从
WheelView
main活动中复制粘贴的


但是运气不好,你们能帮我解决这个问题吗?

显然,唯一缺少的代码是一个xml属性,即wheelItemCount,添加了wheelview项目的渲染。

显示您的活动代码。这个视图布局正确吗?是的,布局正确,我已经更新了片段,你能检查一下吗please@Pavlus你能帮我个忙吗?你能做它的自定义适配器和自定义它的子视图吗?