Recyclerview 未在 alertdialog 中设置
Recyclerview is not setting inside alertdialog
我正在自定义警报对话框视图中设置回收器,但我无法在警报对话框中设置回收器视图。
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
View convertView = LayoutInflater.from(context).inflate(R.layout.recycle_data, null);
alertDialog.setView(convertView);
alertDialog.setTitle(context.getResources().getString(R.string.app_name));
RecyclerView rv = (RecyclerView) convertView.findViewById(R.id.recyclerView);
rv.setLayoutManager(new LinearLayoutManager(context));
rv.setAdapter(new CustomSpinner_Adapter(context, mModels));
AlertDialog dialog= alertDialog.create();
dialog.show();
}
});
我在 android
中传递从 string_array 转换而来的 ArrayList
String[] foodAllergy = getResources().getStringArray(R.array.food_allergy);
for (int i = 0; i < foodAllergy.length; i++) {
mCustomSpinnerModel = new CustomSpinnerModel();
mCustomSpinnerModel.setTitle(foodAllergy[i]);
mModels.add(mCustomSpinnerModel);
}
这是用于设置视图的 CustomAdapter,我的警告对话框视图是在设置自定义适配器视图之前设置的
public class CustomSpinner_Adapter extends RecyclerView.Adapter<CustomSpinner_Adapter.ViewHolder> implements
CompoundButton.OnCheckedChangeListener {
private Context mContext;
private List<CustomSpinnerModel> mCustomModel;
public CustomSpinner_Adapter(Context context, ArrayList<CustomSpinnerModel> models) {
mContext = context;
mCustomModel = models;
}
@NonNull
@Override
public CustomSpinner_Adapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.item_selection_check, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull CustomSpinner_Adapter.ViewHolder holder, int position) {
holder.textCheckTitle.setText(mCustomModel.get(position).getTitle());
}
@Override
public int getItemCount() {
return mCustomModel.size();
}
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
}
public class ViewHolder extends RecyclerView.ViewHolder {
private TextView textCheckTitle;
private CheckBox checkAllergy;
public ViewHolder(View itemView) {
super(itemView);
textCheckTitle = (TextView) itemView.findViewById(R.id.check_text_label);
checkAllergy = (CheckBox) itemView.findViewById(R.id.checkbox_selection);
}
}
}
我不明白为什么在自定义适配器视图之前显示警报对话框
错误不在代码中,而是在 xml 中,因为如果我们使用包含 recyclerview 的约束布局来扩充警报对话框,那么我们需要将 recyclerview 设置为 wrap_content身高
我正在自定义警报对话框视图中设置回收器,但我无法在警报对话框中设置回收器视图。
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
View convertView = LayoutInflater.from(context).inflate(R.layout.recycle_data, null);
alertDialog.setView(convertView);
alertDialog.setTitle(context.getResources().getString(R.string.app_name));
RecyclerView rv = (RecyclerView) convertView.findViewById(R.id.recyclerView);
rv.setLayoutManager(new LinearLayoutManager(context));
rv.setAdapter(new CustomSpinner_Adapter(context, mModels));
AlertDialog dialog= alertDialog.create();
dialog.show();
}
});
我在 android
中传递从 string_array 转换而来的 ArrayListString[] foodAllergy = getResources().getStringArray(R.array.food_allergy);
for (int i = 0; i < foodAllergy.length; i++) {
mCustomSpinnerModel = new CustomSpinnerModel();
mCustomSpinnerModel.setTitle(foodAllergy[i]);
mModels.add(mCustomSpinnerModel);
}
这是用于设置视图的 CustomAdapter,我的警告对话框视图是在设置自定义适配器视图之前设置的
public class CustomSpinner_Adapter extends RecyclerView.Adapter<CustomSpinner_Adapter.ViewHolder> implements
CompoundButton.OnCheckedChangeListener {
private Context mContext;
private List<CustomSpinnerModel> mCustomModel;
public CustomSpinner_Adapter(Context context, ArrayList<CustomSpinnerModel> models) {
mContext = context;
mCustomModel = models;
}
@NonNull
@Override
public CustomSpinner_Adapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.item_selection_check, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull CustomSpinner_Adapter.ViewHolder holder, int position) {
holder.textCheckTitle.setText(mCustomModel.get(position).getTitle());
}
@Override
public int getItemCount() {
return mCustomModel.size();
}
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
}
public class ViewHolder extends RecyclerView.ViewHolder {
private TextView textCheckTitle;
private CheckBox checkAllergy;
public ViewHolder(View itemView) {
super(itemView);
textCheckTitle = (TextView) itemView.findViewById(R.id.check_text_label);
checkAllergy = (CheckBox) itemView.findViewById(R.id.checkbox_selection);
}
}
}
我不明白为什么在自定义适配器视图之前显示警报对话框
错误不在代码中,而是在 xml 中,因为如果我们使用包含 recyclerview 的约束布局来扩充警报对话框,那么我们需要将 recyclerview 设置为 wrap_content身高