如何使另一个班级的班级的图像按钮可见?

时间:2019-10-18 18:13:35

标签: android class kotlin

我有两节课:

  1. RateBottomSheet(这具有其自己的布局)
  2. CustomRateBar(是自定义项目)

我想从CustomRateBar类管理RateBottomSheetLayout某些项目的可见性。 我试图在2中实例1类。但是没有结果。有人有主意吗?我在想一个听众。但是参数应该是什么?风景?有人有例子吗?

Class RateBottomSheet:

´class RateBottomSheet : BottomSheetDialogFragment(){
fun events() {
    imgEmoji.visible()
    feeling.visible()
    title.gone()
    subtitle.gone()
    txtOpinion.visible()
    btnSubmit.visible()
}

private var fragmentView: View? = null

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    fragmentView = inflater.inflate(R.layout.score_bottom_sheet, container, false)
    doBounceAnimation(this.fragmentView)
    return fragmentView
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setStyle(STYLE_NORMAL, R.style.SheetDialog)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    customRB.init(5, context!!)
}

CustomRatingBar类:

´class CustomRatingBar : LinearLayout {
var vChildrens: MutableList<View>? = null
var mContext = context
var size: Int? = null

constructor(
    context: Context?,
    onSelectedStar: IOnSelectedStar
) : super(context) {
    this.onSelectedStar = onSelectedStar
}

constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)

fun init(item: Int, context: Context) {
    this.size = item
    this.mContext = context
    populate()
}

fun populate() {
    vChildrens = ArrayList()
    val lp = LayoutParams(
        (FrameLayout.LayoutParams.MATCH_PARENT),
        (FrameLayout.LayoutParams.WRAP_CONTENT)
    )
    var vChildren: View

    for (item in 1..size!!) {
        vChildren = buildStars(item)
        vChildren.layoutParams = lp
        this.addView(vChildren)
        vChildrens!!.add(vChildren)
    }
    this.requestLayout()
}

fun buildStars(num: Int): View {
    val item = LayoutInflater.from(context).inflate(R.layout.item_ratingbar, null)
    item.tag = num

    var viewHolder = ViewHolder(view = item)

    val unSelectedColor = PorterDuffColorFilter(
        ContextCompat.getColor(
            context,
            R.color.btn_specialities_background
        ), PorterDuff.Mode.SRC_IN
    )
    viewHolder.starItem.colorFilter = unSelectedColor

    viewHolder.starItem.setOnClickListener {
        LogUtils().v("selectOn old", " ${selectOn}")
        for (u in 0 until vChildrens!!.size) {
            val vChildrenn: View = vChildrens!![u]

            viewHolder = ViewHolder(view = vChildrenn)

            LogUtils().v("item", " ${item.tag.toString().toInt()}")
            if (item.tag.toString().toInt() < selectOn || item.tag.toString().toInt() > selectOn && first ) {

                **here I want to call the class event of the another class**
            }


            if (vChildrenn.tag.toString().toInt() <= item.tag.toString().toInt()) {

                val selectedColor = PorterDuffColorFilter(
                    ContextCompat.getColor(
                        context,
                        R.color.star_color
                    ), PorterDuff.Mode.SRC_IN
                )

                viewHolder.starItem.colorFilter = selectedColor

            } else {
                viewHolder.starItem.colorFilter = unSelectedColor

            }

    }
    return item
}

inner class ViewHolder(view: View) {
    var starItem = view.findViewById<View>(R.id.starItem) as ImageButton
}

0 个答案:

没有答案