我在 RecyclerView 中有 100 多个项目。这些天来,我尝试创建简单的代码/有效代码以编程方式在 BottomSheetDialog 中创建复选框,但没有成功。
我的目标 :
- 在 RecyclerView 中单击的每个项目都会显示带有不同数量复选框的 BottomSheetDialog。例子 :
当单击 RecyclerView 中的 item[0] 将打开带有 7 个复选框的 BottomSheetDialog,如果单击 RecyclerView 中的 item[1] 将打开带有 286 个复选框的 BottomSheetDialog,或者如果单击 item [2] 将打开带有 200 个复选框的 BottomSheetDialog,依此类推。
我认为我的目标是可能的,而是为 RecyclerView 中的每个项目创建 100 多个 xml。使用 for 循环、数组和其他...如果没有用于以编程方式创建复选框的简单/有效代码,没关系我将为 RecyclerView 的每个 itemListener 创建 100+ xml
我尝试过的:
我成功添加了单个复选框,但未能添加其他复选框。这是我的代码:
注意:我评论for looping
是因为它不起作用。好的,谢谢大家:)
@Override
public void onClick(View v) {
int itemPosition = recyclerViewSurat.getChildLayoutPosition(v);
String namaSurat = suratList.get(itemPosition).getNamaSurat();
// Toast.makeText(context, namaSurat, Toast.LENGTH_SHORT).show();
BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(context, R.style.BottomSheetDialogTheme);
bottomSheetDialog.setContentView(R.layout.layout_bottom_sheet_ayat);
ConstraintLayout constraintLayout = bottomSheetDialog.findViewById(R.id.constraintLayoutCheckBox);
ConstraintSet constraintSet = new ConstraintSet();
ConstraintLayout.LayoutParams params = new ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT,
ConstraintLayout.LayoutParams.WRAP_CONTENT
);
int margin = (int) convertDpToPixel(30F, context);
params.setMargins(margin,0,0,0);
// for (int i = 0; i < 10; i++) {
// AppCompatCheckBox compatCheckBox = new AppCompatCheckBox(context);
// compatCheckBox.setId(i + 1);
// compatCheckBox.setText("Ayat " + i);
// compatCheckBox.setPadding(25, 0,0,0);
// constraintLayout.addView(compatCheckBox, params);
//
// constraintSet.clone(constraintLayout);
// constraintSet.connect(compatCheckBox.getId(), ConstraintSet.TOP, compatCheckBox.getId() + i, ConstraintSet.BOTTOM, 0);
// constraintSet.applyTo(constraintLayout);
// }
AppCompatCheckBox compatCheckBox = new AppCompatCheckBox(context);
compatCheckBox.setId(R.id.checkbox2);
compatCheckBox.setText("Ayat 1");
compatCheckBox.setPadding(25, 0,0,0);
constraintLayout.addView(compatCheckBox, params);
constraintSet.clone(constraintLayout);
constraintSet.connect(compatCheckBox.getId(), ConstraintSet.TOP, R.id.checkbox1, ConstraintSet.BOTTOM, 0);
constraintSet.applyTo(constraintLayout);
// constraintLayout.addView(checkBox);
bottomSheetDialog.show();
}
private float convertDpToPixel(float dp, Context context) {
return dp * ((float) context.getResources().getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT);
}
}
这里我的layout_bottom_sheet_ayat.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/bottomSheetLinearLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bottom_sheet_ayat"
android:orientation="vertical"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="15dp"
android:text="Pilih Ayat"
android:textColor="@color/black"
android:textSize="20sp"
android:textStyle="bold"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginBottom="5dp"
android:background="@color/white"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintLayoutCheckBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatCheckBox
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/checkbox1"
android:layout_marginStart="15dp"
android:layout_marginTop="24dp"
android:padding="10dp"
android:checked="false"
android:enabled="true"
android:text="Semua Ayat"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginLeft="16dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
非常感谢您的任何建议和帮助:)