我正在使用自定义适配器将数据添加到我的listview,扩展ResourceCursorAdapter
。我需要处理列表视图中的按钮单击事件。每个列表都包含2个按钮。当我点击这些按钮时,如何显示alertdailog ...
我的ListViewAdapter.java
代码......
class ListViewAdapter extends ResourceCursorAdapter {
ListViewAdapter(Context context, int layout, Cursor c) {
super(context, layout, c);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView fname = (TextView) view.findViewById(R.id.fname);
TextView lname = (TextView) view.findViewById(R.id.lname);
TextView gender=(TextView)view.findViewById(R.id.gender);
Button edit=(Button)view.findViewById(R.id.button3);
Button start=(Button)view.findViewById(R.id.button4);
ImageView img=(ImageView)view.findViewById(R.id.profile_image);
fname.setText(cursor.getString(2));
lname.setText(cursor.getString(3));
gender.setText(cursor.getString(5));
Bitmap bmp = BitmapFactory.decodeFile(cursor.getString(10));
Bitmap thumbBitmap = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(cursor.getString(10)),320,240);
img.setImageBitmap(thumbBitmap);
edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setMessage("Hello")
.setPositiveButton("Start", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(getApplicationContext(), Consultation.class);
startActivity(intent);
}
})
.setNegativeButton("Edit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(getApplicationContext(), AddPatient.class);
startActivity(intent);
}
})
.setNeutralButton("Cancel",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
AlertDialog d = builder.create();
d.setTitle("Patient Details");
d.show();
d.setCancelable(false);
}
});
}
代码显示alertdialog上的错误... 我该如何解决这个问题。?
答案 0 :(得分:0)
只需将上下文传递给警报对话框,如下所示:
class ListViewAdapter extends ResourceCursorAdapter {
Context context;
ListViewAdapter(Context context, int layout, Cursor c) {
super(context, layout, c);
this.context=context;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView fname = (TextView) view.findViewById(R.id.fname);
TextView lname = (TextView) view.findViewById(R.id.lname);
TextView gender=(TextView)view.findViewById(R.id.gender);
Button edit=(Button)view.findViewById(R.id.button3);
Button start=(Button)view.findViewById(R.id.button4);
ImageView img=(ImageView)view.findViewById(R.id.profile_image);
fname.setText(cursor.getString(2));
lname.setText(cursor.getString(3));
gender.setText(cursor.getString(5));
Bitmap bmp = BitmapFactory.decodeFile(cursor.getString(10));
Bitmap thumbBitmap = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(cursor.getString(10)),320,240);
img.setImageBitmap(thumbBitmap);
edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Hello")
.setPositiveButton("Start", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(context.getApplicationContext(), Consultation.class);
startActivity(intent);
}
})
.setNegativeButton("Edit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(context.getApplicationContext(), AddPatient.class);
startActivity(intent);
}
})
.setNeutralButton("Cancel",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
AlertDialog d = builder.create();
d.setTitle("Patient Details");
d.show();
d.setCancelable(false);
}
} );
}
答案 1 :(得分:0)
请尝试以下代码
class ListViewAdapter extends ResourceCursorAdapter {
Context mContext;
ListViewAdapter(Context context, int layout, Cursor c) {
super(context, layout, c);
this.mContext=context;
}
}
edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setMessage("Hello")
.setPositiveButton("Start", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(mContext, Consultation.class);
startActivity(intent);
}
})
.setNegativeButton("Edit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(mContext, AddPatient.class);
startActivity(intent);
}
})
.setNeutralButton("Cancel",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
AlertDialog d = builder.create();
d.setTitle("Patient Details");
d.show();
d.setCancelable(false);
}
});
相反, MainActivity.This 和 getApplicationContext()使用 mContext