Я новичок в программировании на Android, это сложно объяснить, но вот моя ситуация.
Я получил 2 RecyclerView
s, используя один и тот же файл layout.xml в ViewHolder
Я установил статический layout_width
, который отлично работает для горизонтальной прокрутки RecyclerView, код XML ниже
rvFirst.layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
Но 2-й вертикально прокручиваемый RecyclerView,если ширина ячейки не покрывает родительский элемент,
возможно ли использовать тот же файл макета, что и ниже, и иметь возможность изменить layout_width
для соответствия / заполнения родительского элемента?
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/_150sdp"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/activity_vertical_margin"
android:orientation="vertical">
<TextView
android:id="@+id/tvTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/separator"
android:ellipsize="end"
tools:text="Title"
android:maxLines="1"
android:textSize="@dimen/normal_text_size" />
<TextView
android:id="@+id/tvDescrip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
tools:text="Description"
android:textSize="@dimen/small_text_size" />
</LinearLayout>
</androidx.cardview.widget.CardView>
Я могу передать параметр isVertical: Boolean
как в Adapter, так и в ViewHolder, но я понятия не имею, где мне следует изменить макет
class CustomAdapter(val items: ArrayList<Item>, val isVertical: Boolean = false): RecyclerView.Adapter<CustomViewHolder>() {
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): CustomViewHolder {
val view = LayoutInflater.from(p0.context).inflate(R.layout.item_layout, p0, false)
return CustomViewHolder(view, isVertical)
}
override fun getItemCount(): Int {
return items.size
}
override fun onBindViewHolder(p0: CustomViewHolder, p1: Int) {
items.getOrNull(p1)?.let {
p0.bindData(it)
}
}
}
class CustomViewHolder(val view: View, isVertical: Boolean) : RecyclerView.ViewHolder(view) {
private val tvTitle: TextView = view.findViewById(R.id.tvTitle)
private val tvDescrip: TextView = view.findViewById(R.id.tvDescrip)
fun bindData(item: Item) {
tvTitle.text = "Title"
tvDescrip.text = "Description"
}
}