Пытаюсь реализовать RecyclerView. Контейнер внутри ConstraintLayout
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/pushDataContainer"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/inWorkTextView">
</androidx.recyclerview.widget.RecyclerView>
разметка для карточки
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/cv_not_in_work"
android:layout_margin="5dp"
card_view:cardCornerRadius="4dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/rectangleNumber"
android:layout_width="60dp"
android:layout_height="28dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:background="@drawable/rectangle"
android:gravity="center_vertical|center_horizontal"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/dateTimeView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/montserrat"
app:layout_constraintStart_toStartOf="@+id/rectangleNumber"
app:layout_constraintTop_toBottomOf="@+id/rectangleNumber" />
<TextView
android:id="@+id/address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/poppins_medium"
app:layout_constraintStart_toStartOf="@+id/dateTimeView"
app:layout_constraintTop_toBottomOf="@+id/dateTimeView" />
<TextView
android:id="@+id/cvalView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/poppins_medium"
app:layout_constraintStart_toStartOf="@+id/address"
app:layout_constraintTop_toBottomOf="@+id/address" />
<TextView
android:id="@+id/taskView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/poppins_medium"
app:layout_constraintStart_toStartOf="@+id/cvalView"
app:layout_constraintTop_toBottomOf="@+id/cvalView" />
<TextView
android:id="@+id/description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/montserrat"
app:layout_constraintStart_toStartOf="@+id/taskView"
app:layout_constraintTop_toBottomOf="@+id/taskView" />
<Button
android:id="@+id/agreeBtn"
android:layout_width="100dp"
android:layout_height="30dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:background="@drawable/rectangle"
android:backgroundTint="#00CC4F"
android:fontFamily="@font/montserrat"
android:text="Принять"
android:textColor="#FFFFFF"
app:layout_constraintStart_toStartOf="@+id/description"
app:layout_constraintTop_toBottomOf="@+id/description" />
<Button
android:id="@+id/disagreeBtn"
android:layout_width="100dp"
android:layout_height="30dp"
android:layout_marginLeft="16dp"
android:layout_marginBottom="8dp"
android:backgroundTint="#F23B51"
android:text="Отклонить"
android:onClick="agreeBtn"
android:textColor="#FFFFFF"
android:fontFamily="@font/montserrat"
android:background="@drawable/rectangle"
app:layout_constraintLeft_toRightOf="@+id/agreeBtn"
app:layout_constraintTop_toTopOf="@+id/agreeBtn" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
класс viewholder
public class RecyclerViewHolders extends RecyclerView.ViewHolder {
TextView number;
TextView dateTime;
TextView address;
TextView cval;
TextView task;
TextView description;
Button disagree;
public RecyclerViewHolders(@NonNull View itemView) {
super(itemView);
number = itemView.findViewById(R.id.rectangleNumber);
dateTime = itemView.findViewById(R.id.dateTimeView);
address = itemView.findViewById(R.id.address);
cval = itemView.findViewById(R.id.cvalView);
task = itemView.findViewById(R.id.taskView);
description = itemView.findViewById(R.id.description);
disagree = itemView.findViewById(R.id.disagreeBtn);
}
}
адаптер
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewHolders> {
Context context;
List<PushData> list;
public RecyclerViewAdapter(Context context, List<PushData> list) {
this.list = list;
this.context = context;
}
public void setList(List<PushData> list) {
this.list = list;
}
@NonNull
@Override
public RecyclerViewHolders onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_not_in_work, null);
RecyclerViewHolders rcv = new RecyclerViewHolders(layoutView);
return rcv;
}
@Override
public void onBindViewHolder(@NonNull RecyclerViewHolders holder, int position) {
holder.description.setText(list.get(position).task);
holder.address.setText(list.get(position).address);
holder.dateTime.setText(list.get(position).date);
holder.cval.setText(list.get(position).cval);
holder.number.setText(list.get(position).number);
holder.task.setText(list.get(position).task);
if(list.get(position).type.equalsIgnoreCase("autoselect"))
holder.disagree.setVisibility(View.INVISIBLE);
else
holder.disagree.setVisibility(View.VISIBLE);
}
@Override
public int getItemCount() {
return list == null ? 0 : list.size();
}
}
в onCreate инициализирую. Может дело в том, что использую LinearLayoutManager, а layout - Constraint?
RecyclerView rv = findViewById(R.id.pushDataContainer);
LinearLayoutManager llm = new LinearLayoutManager(this);
rv.setLayoutManager(llm);
rva = new RecyclerViewAdapter(getApplicationContext(), pushDataList);
rv.setAdapter(rva);
затем по нажатию на кнопку идет запрос к бд и возвращается список с данными
rva.setList(pushData);
rva.notifyDataSetChanged();
результат на картинке. кнопки при этом не кликабельны и список не прокручивается.

RecyclerViewвыходит за пределы экрана. Он у вас привязан к низу контейнера, но как настроен и расположен сам контейнер мы не видим - возможно ему задана высотаwrap_content. Насчёт кнопок неясно как вы определяете их кликабельность, если им не назначены слушатели. Если имеется в виду визуальное подсвечивание - то может быть у них на фоне просто картинки или шейпы, а не селекторы, или селекторы неправильно оформлены. – woesss Feb 15 '20 at 20:49RecyclerVewчерезScrollViewи все работало. – Anton Charov Feb 15 '20 at 21:09