Android 路加·戴顿车轮视图
这是我第一次上stack,因为大多数问题的答案都已经有了,但这是Luke Deighton写的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
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你能帮我个忙吗?你能做它的自定义适配器和自定义它的子视图吗?