【发布时间】:2021-08-09 14:04:03
【问题描述】:
在我的代码中,dialog.dismiss(); 函数不工作,但回调函数工作正常,callback.onItemClicked(position);
请帮帮我,我是android领域的新手!
相同的代码在activity 中运行良好,但在adapter class 中出现问题。
适配器类
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
private final Context mContext;
private final ArrayList<String> mData;
AdapterCallback callback;
Dialog dialog;
public Adapter(Context mContext, ArrayList<String> mData, AdapterCallback callback) {
this.mContext = mContext;
this.mData = mData;
this.callback = callback;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item, parent, false));
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
if (Helper.readSharedPref(mContext, Constants.PREF_KEY_Sub).equalsIgnoreCase("notActive")) {
if (!mData.get(position).equalsIgnoreCase("PENDING")) {
alertSuccessShowDialog(mContext, position);
}
}
}
@Override
public int getItemCount() {
return mData != null ? mData.size() : 0;
}
@Override
public int getItemViewType(int position) {
return position;
}
public interface AdapterCallback {
void onItemClicked(int position);
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView tv_bank_name;
public ViewHolder(@NonNull View itemView) {
super(itemView);
tv_bank_name = itemView.findViewById(R.id.tv_bank_name);
}
}
private void alertSuccessShowDialog(Context context, int position) {
dialog = new Dialog(context);
dialog.setContentView(R.layout.enquiry_popup);
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dialog.getWindow().setGravity(Gravity.CENTER);
dialog.setCancelable(false);
dialog.findViewById(R.id.iv_close_btn).setOnClickListener(v -> {
dialog.dismiss();
callback.onItemClicked(position);
});
dialog.show();
}
}
【问题讨论】:
标签: android android-studio android-layout