Есть ли способ сделать вьюверлер расширяемым с помощью FirestoreRecyclerAdapter? - PullRequest
0 голосов
/ 25 октября 2019

Можно ли расширить каждый держатель, как в onBindViewHolder? Как получить позицию и использовать isExpanded?

РЕДАКТИРОВАТЬ

Снимок экрана

Так вот что я сделал такдалеко в моем переработчике с помощью FirestoreRecyclerAdapter. Я не понял, как создать свой XML и расширить его на моем адаптере. Сначала я хочу скрыть панель поиска и показать ее при расширении.

Это мой адаптер

public class TaskAdapter extends FirestoreRecyclerAdapter <Activities, TaskAdapter.TaskHolder> {
    private static final String TAG = "TaskAdapter";

    TaskListener listener;

    public TaskAdapter(@NonNull FirestoreRecyclerOptions<Activities> options, TaskListener listener) {
        super(options);
        this.listener = listener;
    }

    @Override
    protected void onBindViewHolder(@NonNull TaskHolder holder, int position, @NonNull Activities activities) {
        holder.tvTitle.setText(activities.getTitle());

    }

    @NonNull
    @Override
    public TaskHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
        View view = layoutInflater.inflate(R.layout.layout_list_tasks, parent, false);
        return new TaskAdapter.TaskHolder(view);
    }

    class TaskHolder extends RecyclerView.ViewHolder{
        TextView tvTitle, tvPercent;
        ConstraintLayout expandableLayout;

        public TaskHolder(@NonNull View itemView) {
            super(itemView);
            tvTitle = itemView.findViewById(R.id.tvActivityTitle);
            expandableLayout = itemView.findViewById(R.id.expandableLayout);
        }
    }
    public interface TaskListener{
        void onItemClick(DocumentSnapshot documentSnapshot, int position);
    }

}

Это мой XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="8dp">

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="8dp">

        <androidx.constraintlayout.widget.ConstraintLayout xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/tvActivityTitle"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:background="?attr/selectableItemBackground"
                android:ellipsize="end"
                android:maxLines="1"
                android:padding="16dp"
                android:text="Title"
                android:textAppearance="@style/TextAppearance.AppCompat.Medium"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <androidx.constraintlayout.widget.ConstraintLayout
                android:id="@+id/expandableLayout"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:visibility="visible"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/tvActivityTitle">

                <TextView
                    android:id="@+id/percent"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="%"
                    android:textAppearance="@style/TextAppearance.AppCompat.Small"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

                <androidx.appcompat.widget.AppCompatSeekBar
                    android:id="@+id/seekBar"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    app:layout_constraintStart_toEndOf="@+id/percent"
                    app:layout_constraintTop_toTopOf="parent" />


            </androidx.constraintlayout.widget.ConstraintLayout>


        </androidx.constraintlayout.widget.ConstraintLayout>


    </androidx.cardview.widget.CardView>

</LinearLayout>
...