我有一个小问题。我无法通过单击 RecyclerView
项目打开 AlertDialog
。这是我的 AlertDialog
代码:
public class LoginDialog extends AppCompatDialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.dialog_fragment, null);
builder.setView(view)
.setTitle("Login")
.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
return builder.create();
}
}
现在我想通过单击 RecyclerView
项来显示它。这是适配器代码:
public class UserAdapter extends RecyclerView.Adapter<UserAdapter.UserViewHolder> {
private List<UserModel> list;
Context context;
public UserAdapter(List<UserModel>list, Context context){
this.context = context;
this.list = list;
}
@Override
public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new UserViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.view_item, parent, false));
}
@Override
public void onBindViewHolder(final UserViewHolder holder, int position) {
UserModel user = list.get(position);
holder.textName.setText(user.name + " " + user.surname);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LoginDialog loginDialog = new LoginDialog();
loginDialog.show()
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class UserViewHolder extends RecyclerView.ViewHolder{
TextView textName;
public UserViewHolder(View itemView) {
super(itemView);
textName = itemView.findViewById(R.id.textName);
}
}
}
遗憾的是,我无法对 loginDialog.show()
执行任何操作。我无法解析 getSupportFragmentManager
或 getFragmentManager
。唯一的选择是在 LoginDialog
类中创建名为 show
的新函数。但后来我总是得到 NPE..
最佳答案
您在 Adapter
中已经有 Context
。这样就可以直接使用了。
LoginDialog dialogFragment = new LoginDialog ();
dialogFragment.show(((AppCompatActivity)context).getSupportFragmentManager(), "Fragment");
关于android - 如何通过单击 RecyclerView 项打开 AlertDialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49198824/