我的RecyclerView显示如下所示的天数。
首先,一切都按预期工作(正确设置日期,颜色,缩写和透明度)。当我按下下面的一个圆圈时,居中日的数据应该改变。它确实如此,除了透明度设置为1(不透明),无论数据如何。如果您滚动一点直到视图(应该具有透明度)被回收然后返回,则再次正确设置透明度。
这是我的RecyclerView适配器:
public class RecyclerViewAdapterDays extends RecyclerView.Adapter<RecyclerViewAdapterDays.ViewHolder> {
private final int[] month;
private final int[] dates;
private final boolean[] weekends;
private final Shift[] shifts;
private int default_background_color;
public RecyclerViewAdapterDays(int[] month, int[] dates, Shift[] shifts, boolean[] weekends) {
this.month = month;
this.dates = dates;
this.shifts = shifts;
this.weekends = weekends;
}
@Override
public RecyclerViewAdapterDays.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
DoubledotLayoutBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.doubledot_layout, parent, false);
ViewHolder viewHolder = new ViewHolder(binding);
default_background_color = parent.getContext().getResources().getColor(R.color.colorPrimaryDark);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
System.out.println("Binding " + position);
System.out.println("Alpha " + (weekends[position] ? 0.2f : 1f));
holder.binding.setShift(shifts[month[position]]);
holder.binding.setDate(String.valueOf(dates[position]));
System.out.println("Date " + (dates[position]));
holder.binding.setDefaultColor(default_background_color);
holder.binding.rootLayout.setAlpha(weekends[position] ? 0.2f : 1f);
holder.binding.executePendingBindings();
}
@Override
public int getItemCount() {
return month.length;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
final DoubledotLayoutBinding binding;
public ViewHolder(DoubledotLayoutBinding itemView) {
super(itemView.getRoot());
binding = itemView;
}
}
}
如果我运行应用程序并按下其中一个圆圈,这将改变轮班数组中的班次,然后调用notifyItemChanged
。 (nether dates
也会weekends
会发生变化)我可以在日志中看到onBindViewHolder
在正确位置被调用且weekends[position] ? 0.2f : 1f
确实返回了0.2f
。< / p>
那么为什么我的RecyclerView项目仍然不透明?
编辑:以下是日期的布局:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="shift"
type="hexpoly.dienstplan.Shift" />
<variable
name="date"
type="String" />
<variable
name="defaultColor"
type="Integer" />
</data>
<android.support.constraint.ConstraintLayout
android:id="@+id/root_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/activity_edit_month_doubledot_padding_land"
android:paddingRight="@dimen/activity_edit_month_doubledot_padding_land"
android:paddingTop="8dp"
android:paddingBottom="8dp">
<ImageView
android:layout_width="@dimen/activity_edit_month_doubledot_width"
android:layout_height="80dp"
android:src="@drawable/doubledot"
android:tint="@{shift.color == 0 ? defaultColor : shift.color}"
tools:ignore="ContentDescription" />
<android.support.constraint.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
<TextView
android:id="@+id/tv_day"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{date, default = 12}"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_shift"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@{shift.short_name, default = F1}"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/guideline"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
</layout>
并且班次类传递给布局:
public class Shift
{
public String short_name, name, start, end;
public int color, id;
public boolean priority = false;
public boolean defaultShift = false;
Shift() {}
}