Как сделать видимой кнопку Изображение класса из другого класса? - PullRequest
0 голосов
/ 18 октября 2019

У меня есть два класса:

  1. RateBottomSheet (это имеет собственный макет)
  2. CustomRateBar (это пользовательский элемент)

Я хочууправлять видимостью некоторых элементов RateBottomSheetLayout из класса CustomRateBar. Я попытался создать экземпляр класса 1 в 2. Но не привел. У кого-нибудь есть идея? Я думал в слушателе. Но какой должен быть параметр? вид? У кого-нибудь есть какой-нибудь пример?

Класс 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
}

} ´

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...