С какими view приходилось работать

Ответ

Работал с TextView, EditText, Button, RecyclerView, ImageView, ConstraintLayout, LinearLayout, CardView, ViewPager2, WebView.

Особенно часто использовал RecyclerView с адаптерами и холдерами:

class Adapter(private val items: List<String>) : RecyclerView.Adapter<Adapter.ViewHolder>() {
    class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
        val textView: TextView = view.findViewById(R.id.textView)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false)
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.textView.text = items[position]
    }
}

Также активно применял ConstraintLayout для сложных макетов, ViewPager2 для горизонтальной навигации и WebView для отображения веб-контента.

Ответ 18+ 🔞

А, ну это ж классика, ебать мои старые костыли! Каждый раз, когда начинаешь новый проект, будто на дворе 2002-й год — опять эти TextView да EditText лепишь. Но без них нихуя не работает, так что приходится.

Особенно этот ваш RecyclerView — ёпта, целая история. Сначала пишешь адаптер, потом холдер, потом биндишь... Чувак, я помню времена, когда списки были на ListView, и там ад был проще, честно. А сейчас — овердохуища кода, чтобы просто список текста показать. Смотри, вот же, типичный угар:

class Adapter(private val items: List<String>) : RecyclerView.Adapter<Adapter.ViewHolder>() {
    class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
        val textView: TextView = view.findViewById(R.id.textView)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false)
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.textView.text = items[position]
    }
}

Выглядит-то просто, а попробуй добавить клики на элементы, или разные типы вьюх, или свайпы — тут же волнение ебать начинается, терпения ноль ебать. Но зато, когда всё работает и плавно скроллится — красота, пизда рулю.

А ConstraintLayout — это вообще хитрая жопа. Казалось бы, расставил констрейнты и живи спокойно. Ан нет! То один элемент на другой наезжает, то на разных экранах всё плывёт. Час сидишь, привязываешь одну вьюху к краю родителя, а она, сука, убегает за экран. Сам от себя охуеваешь.

ViewPager2 — молодчага, конечно. После старого ViewPager с его костылями — просто небо и земля. Вертикальный скролл, нормальная работа с RecyclerView.Adapter — красота. Только вот с трансформациями и анимациями иногда такой пиздец творится, что хочется сказать: «Идите вы все нахуй!», как тот самый Гамлет.

Ну и WebView — это отдельная песня, ядрёна вошь. Загрузил в него страницу, а она либо грузится полжизни, либо JS кривой всё ломает, либо куки теряются. Доверия ебать ноль к этому компоненту. Но что поделать — если нужно в приложении сайт показать, то идёшь на эту каторгу.

В общем, работа с вьюхами в андроиде — это как сборка мебели из Икеи. Вроде по инструкции делаешь, а в итоге остаётся лишний винтик, и ты сидишь с хуем в пальто, думая, куда его, блядь, прикрутить. Но когда собираешь — приложение живёт, и даже иногда не вылетает.