[英]AlertDialog in recycler view on button click
當我點擊btnSubmit時,我的應用程序崩潰了。 並給出這個錯誤
java.lang.NullPointerException:嘗試在空對象引用上調用虛擬方法'android.content.res.Resources $ Theme android.content.Context.getTheme()'。
下面寫的代碼;
公共類RecycleAdoptor擴展了RecyclerView.Adapter {
Context cont;
DataSource ds;
Double lon = 0.0;
Double lat = 0.0;
RecycleAdoptor(Context paramContext)
{
this.cont = paramContext;
}
private List<Employee> mDocs;
@Override
public RecycleAdoptor.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Log.e("jarvis", "RecylerAdoptor");
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View v = inflater.inflate(R.layout.activity_list_items, parent, false);
// set the view's size, margins, paddings and layout parameters
ViewHolder vh = new ViewHolder(v);
return vh;
}
public RecycleAdoptor(List<Employee> myDataset, Context context) {
mDocs = myDataset;
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
// - get element from your dataset at this position
// - replace the contents of the view with that element
final Employee emp = mDocs.get(position);
holder.empID.setText(emp.getID());
holder.empName.setText(emp.getEmpName());
holder.empDesignation.setText(emp.getDesignation());
holder.empSpeciality.setText(emp.getSpeciality());
holder.empAddress.setText(emp.getAddress());
}
@Override
public int getItemCount() {
return mDocs.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
public TextView empID;
public TextView docID;
public TextView empName;
public TextView empAddress;
public TextView empDesignation;
public TextView empSpeciality;
public TextView empStatus;
public Button btnSaveAttd;
public Spinner spinner;
public View layout;
public ViewHolder(View v) {
super(v);
layout = v;
empID = (TextView) v.findViewById(R.id.emp_id);
empName = (TextView) v.findViewById(R.id.empName);
empDesignation = (TextView) v.findViewById(R.id.empDesignation);
empSpeciality = (TextView) v.findViewById(R.id.empSpecialist);
empAddress = (TextView) v.findViewById(R.id.empAddress);
spinner = (Spinner) v.findViewById(R.id.spinner1);
btnSaveAttd = (Button) v.findViewById(R.id.btnSaveAttd);
btnSaveAttd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Date currentTime = Calendar.getInstance().getTime();
double lon = ProfileActivity.Lon;
double lat = ProfileActivity.Lat;
AlertDialog.Builder alertDialog = new AlertDialog.Builder(
cont);
alertDialog.setTitle("Leave application?");
alertDialog.setMessage("Are you sure you want to leave the application?");
alertDialog.setIcon(R.drawable.ic_menu_camera);
alertDialog.setPositiveButton("YES",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
alertDialog.setNegativeButton("NO",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
alertDialog.show();
}
});
}
}
}
對不起,英語不好,但是需要認真的幫助...
我上傳我的答案。 及其工作正常,我提到我做錯問題的概率。
Context cont;
DataSource ds;
Double lon = 0.0;
Double lat = 0.0;
RecycleAdoptor(Context paramContext)
{
this.cont = paramContext;
}
private List<Employee> mDocs;
@Override
public RecycleAdoptor.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Log.e("jarvis", "RecylerAdoptor");
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View v = inflater.inflate(R.layout.activity_list_items, parent, false);
// set the view's size, margins, paddings and layout parameters
ViewHolder vh = new ViewHolder(v);
return vh;
}
public RecycleAdoptor(List<Employee> myDataset, Context context) {
mDocs = myDataset;
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
// - get element from your dataset at this position
// - replace the contents of the view with that element
final Employee emp = mDocs.get(position);
holder.empID.setText(emp.getID());
holder.empName.setText(emp.getEmpName());
holder.empDesignation.setText(emp.getDesignation());
holder.empSpeciality.setText(emp.getSpeciality());
holder.empAddress.setText(emp.getAddress());
}
@Override
public int getItemCount() {
return mDocs.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
public TextView empID;
public TextView docID;
public TextView empName;
public TextView empAddress;
public TextView empDesignation;
public TextView empSpeciality;
public TextView empStatus;
public Button btnSaveAttd;
public Spinner spinner;
public View layout;
public ViewHolder(View v) {
super(v);
layout = v;
empID = (TextView) v.findViewById(R.id.emp_id);
empName = (TextView) v.findViewById(R.id.empName);
empDesignation = (TextView) v.findViewById(R.id.empDesignation);
empSpeciality = (TextView) v.findViewById(R.id.empSpecialist);
empAddress = (TextView) v.findViewById(R.id.empAddress);
spinner = (Spinner) v.findViewById(R.id.spinner1);
btnSaveAttd = (Button) v.findViewById(R.id.btnSaveAttd);
btnSaveAttd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Date currentTime = Calendar.getInstance().getTime();
double lon = ProfileActivity.Lon;
double lat = ProfileActivity.Lat;
AlertDialog.Builder alertDialog = new AlertDialog.Builder(v.getContext());//Here I have to use v.getContext() istead of just cont.
alertDialog.setTitle("Leave application?");
alertDialog.setMessage("Are you sure you want to leave the application?");
alertDialog.setIcon(R.drawable.ic_menu_camera);
alertDialog.setPositiveButton("YES",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
alertDialog.setNegativeButton("NO",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
alertDialog.show();
}
});
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.