我有一个像下图所示的回收视图
背景颜色是在适配器中使用位置动态给出的,因此只有当项目(卡片)我可以为背景着色时,我才能将linearlayout作为cardview的父级,并且我为线性布局着色。
recyclerview:
<android.support.v7.widget.RecyclerView
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="40dp"
style="@style/scrollbar_style"
/>
这是项目资源:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/back"
android:paddingBottom="10dp"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
card_view:cardCornerRadius="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="4dp"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/iconEntry"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:adjustViewBounds="true"
android:scaleType="centerInside"
android:layout_marginBottom="2dp"/>
<TextView
android:id="@+id/titleEntry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="12sp"
android:textStyle="bold"
android:paddingStart="4dp"
android:paddingEnd="4dp"
android:layout_marginBottom="2dp"/>
<TextView
android:id="@+id/titleSpanishEntry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="12sp"
android:textStyle="bold"
android:paddingStart="4dp"
android:paddingEnd="4dp"
android:layout_marginBottom="2dp"/>
<TextView
android:id="@+id/countEntry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="4dp"
android:paddingEnd="4dp"
android:textSize="10sp"/>
</LinearLayout>
</android.support.v7.widget.CardView>
适配器:
public LinearLayout back;
public MyViewHolder(View view) {
super(view);
back = view.findViewById(R.id.back);
}
适配器onBindViewHolder:
holder.back.setBackgroundColor(Color.parseColor(
EntriesItemList.get(getCategory(position))
.getDisposalTypeCategory()
.getColor()));
现在要求是颜色,即使第1部分没有像空白空间这样的项目。
只有在我可以根据适配器位置动态更改recyclerview背景(而不是卡片背景)时才能完成,但看起来不可能,因为两者之间没有任何关系。有关如何做到这一点的任何建议吗?
答案 0 :(得分:0)
一种解决方案是在适配器构造函数中传递RecyclerView,并在适配器onBindViewHolder方法中根据适配器位置更改RecyclerView背景。
答案 1 :(得分:0)
我已经解决了这个问题,总是通过添加虚拟不可见项来确保连续3个项目,以便背景颜色一直延伸到整行。