gpt4 book ai didi

java - 从 RecyclerView 中的 ViewHolder 中删除小部件

转载 作者:行者123 更新时间:2023-12-02 01:35:58 26 4
gpt4 key购买 nike

我想制作一个应用程序来跟踪我的支出。我有一个数据库,其中有一个名为类别的表。在此表中,我保存了category_id(int)、category_name(varchar)、limit_week(int)、limit_month(int)。如果我不想有限制,它们可以为空。添加类别效果非常好。

现在我想在 RecyclerView 中显示类别。项目的布局如下所示:

<androidx.cardview.widget.CardView android:layout_height="wrap_content"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:cardCornerRadius="@dimen/card_corner_radius"
app:cardBackgroundColor="@color/card_color"
app:contentPadding="@dimen/card_content_padding"
app:cardElevation="@dimen/card_elevation"
android:layout_margin="@dimen/card_margin">

<androidx.constraintlayout.widget.ConstraintLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<TextView
android:id="@+id/tvCat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/tvLimWeek"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/weekly_limit"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvCat" />

<TextView
android:id="@+id/tvLimMonth"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/monthly_limit"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvLimWeek" />

<TextView
android:id="@+id/tvLimWeekEnter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toEndOf="@id/tvLimMonth"
app:layout_constraintTop_toTopOf="@id/tvLimWeek"
android:layout_marginLeft="@dimen/margin_16sp"
android:layout_marginStart="@dimen/margin_16sp" />
<TextView
android:id="@+id/tvLimMonthEnter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toEndOf="@id/tvLimMonth"
app:layout_constraintTop_toTopOf="@id/tvLimMonth"
android:layout_marginLeft="@dimen/margin_16sp"
android:layout_marginStart="@dimen/margin_16sp" />

<ProgressBar
android:id="@+id/progressBarWeek"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/tvLimWeekEnter"
app:layout_constraintTop_toTopOf="@+id/tvLimWeekEnter"
android:max="100"/>

<ProgressBar
android:id="@+id/progressBarMonth"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/tvLimMonthEnter"
app:layout_constraintTop_toTopOf="@+id/tvLimMonth"
android:max="100"/>

</androidx.constraintlayout.widget.ConstraintLayout>

我只想在有限制时显示进度条,否则我想删除它们。这是我的 RecyclerView 适配器:

class CategoryAdapter(private val mCats: List<Category>, private val context: Context): RecyclerView.Adapter<CategoryViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CategoryViewHolder {
return CategoryViewHolder(LayoutInflater.from(context).inflate(R.layout.categories_view, parent, false))
}

override fun getItemCount() = mCats.size

override fun onBindViewHolder(holder: CategoryViewHolder, position: Int) {
val cat: Category = mCats[position]
holder.tvCat.text = cat.cat_name
if(cat.limit_week != null)
holder.tvLimitWeekEnter.text = cat.limit_week.toString()
else {
holder.tvLimitWeek.height = 0
holder.tvLimitWeekEnter.height = 0
}
if(cat.limit_month != null)
holder.tvLimitMonthEnter.text = cat.limit_month.toString()
else {
holder.tvLimitMonth.height = 0
holder.tvLimitMonthEnter.height = 0
}
}

}

我不知道是否可以以某种方式删除 TextView,所以我只是将高度设置为 0。但现在我需要删除进度条,因为我无法更改高度。那么有没有办法去除它们呢?

最佳答案

您可以使用setVisibility(View.GONE)在进度条上使其不可见,并且不占用任何布局空间。

关于java - 从 RecyclerView 中的 ViewHolder 中删除小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55267294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com