Как вы используете в своём проекте связку Rx и ButterKnife?
Пилю собственное приложение и хотелось бы узнать мнение опытных программистов по поводу связок библиотек для написания структурированного, красивого кода. На данный момент в проекте есть GSON, ButterKnife, EventBus, RxBinding, RxKotlin. В частности, пример - есть кнопка на экране, которую хочется забиндить на клик. Можно сделать это с помощью ButterKnife
@OnClick(R.id.add_content)
fun addItem() {
//TODO
}
Можно это сделать с помощью Rx:
btnAdd!!.clicks(//TODO)
- Какие общие советы будут по использованию этих библиотек вместе?
- EventBus использую для того что бы по нажатию в одной активити создавался элемент в RecyclerView в другой активити. Но чувствую что как-то коряво - можно ведь сделать это с помощью Rx?
Ответы (1 шт):
Если вы используете Kotlin то вам не нужен ButterKnife в принципе. Вы можете обращаться к вашим View из XML прям по id. В Activity после вызова метода setContentView(), во Fragment-е после вызова onViewCreated().
Например:
XML:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/welcomeMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Hello World!"/>
</FrameLayout>
Activity:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
welcomeMessage.text = "Hello Kotlin!"
}
Fragment:
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
welcomeMessage.text = "Hello Kotlin!"
}
}
RecyclerView.ViewHolder:
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(data: Data) {
itemView.welcomeMessage.text = "Hello Kotlin!"
}
}
}
Здесь статья на эту тему.