Использование котлина или в параматере? - PullRequest
0 голосов
/ 19 января 2019

У меня есть две функции и два массива.функции и массивы выполняют одну и ту же вещь и выглядят одинаково, за исключением того, что каждый принимает строку, а другой - переменную.

они выглядят примерно так:

private fun createTextView(randomText: String): View {
        tv = TextView(context)
        val linearLevel1: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT
        )
        tv.layoutParams = linearLevel1
        tv.gravity = Gravity.END
        tv.typeface = ResourcesCompat.getFont(context, R.font.blogger_sans_medium)
        tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25f)
        tv.text = randomText
        return tv
    }
    private fun createTextView(randomText: SpannableStringBuilder): View {
        tv = TextView(context)
        val linearLevel1: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT
        )
        tv.layoutParams = linearLevel1
        tv.gravity = Gravity.END
        tv.typeface = ResourcesCompat.getFont(context, R.font.blogger_sans_medium)
        tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25f)
        tv.text = randomText
        return tv
    }

и два массива выглядят так

private var textViewArr = ArrayList<String>()
private var textViewArrSpan = ArrayList<SpannableStringBuilder>()

В любом случае, я могу объединить их?Могу ли я заставить функцию принимать параметр A или B или переменную можно инициализировать с помощью A или B?Я пытался искать в Интернете, и я видел места, которые предлагали мне делать то, что я уже сделал.интересно, есть ли более эффективный способ сделать это.

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Изменить тип randomText с String или SpannableStringBuilder на CharSequence

0 голосов
/ 19 января 2019

Оба String и SpannableStringBuilder агрегат CharSequence, и чтение документации для TextView.setText(), этотакже принимает CharSequence.

Так что я думаю, что вы можете просто сделать это:

private fun createTextView(randomText: CharSequence): View {
    tv = TextView(context)
    val linearLevel1: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT,
        ViewGroup.LayoutParams.WRAP_CONTENT
    )
    tv.layoutParams = linearLevel1
    tv.gravity = Gravity.END
    tv.typeface = ResourcesCompat.getFont(context, R.font.blogger_sans_medium)
    tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25f)
    tv.text = randomText
    return tv
}

Не критично, но связано, мы можем также сделать это выражение ...

private fun createTextView(randomText: CharSequence): View =
    TextView(context).apply {
        layoutParams = LinearLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT
        )
        gravity = Gravity.END
        typeface = ResourcesCompat.getFont(context, R.font.blogger_sans_medium)
        setTextSize(TypedValue.COMPLEX_UNIT_SP, 25f)
        text = randomText
   }
...