セルに削除ボタンが含まれているリストビュー用のカスタム アダプターがあります。「本当にこのエントリを削除しますか?」というメッセージを表示したい 削除を押したとき。
カスタム アダプタの内部から削除ボタン イベントを処理します。問題は、ダイアログを作成するために現在のアクティビティへの参照が必要なことです...どうすればこれを解決できますか? コンテキストを使用するだけで、null ポインター例外が発生します。
セルに削除ボタンが含まれているリストビュー用のカスタム アダプターがあります。「本当にこのエントリを削除しますか?」というメッセージを表示したい 削除を押したとき。
カスタム アダプタの内部から削除ボタン イベントを処理します。問題は、ダイアログを作成するために現在のアクティビティへの参照が必要なことです...どうすればこれを解決できますか? コンテキストを使用するだけで、null ポインター例外が発生します。
このコードを入れて...
AlertDialog.Builder alertDialog = new AlertDialog.Builder((Activity) v.getContext());
alertDialog.setTitle("Delete this item?");
alertDialog.setMessage("Are you sure you want to delete this?");
alertDialog.setIcon(R.drawable.icon);
alertDialog.setPositiveButton(
"Delete",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Do the stuff..
}
}
);
}
alertDialog.show();
あなたのリストビュークリックリスナーで:
@Override
public void onListItemClick(ListView lv, View v, int position, long id) {
}
あなたが探していたものですか?
アクティビティがコンテキストをアダプタに渡すことができるように、これはアダプタのスケルトンである必要があります。
public class ImagePrepare extends BaseAdapter {
private Context ctx;
public ImagePrepare(Context ctx, String[] icons,DisplayMetrics m) {
// TODO Auto-generated constructor stub
this.ctx=ctx;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return lengthofdata;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return data[position];
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public int getItemViewType(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
}
}
こんな感じで使えます。
lv1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
LayoutInflater layout = (LayoutInflater) getBaseContext()
.getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = layout.inflate(R.layout.popup1, null);
Display display = getWindowManager().getDefaultDisplay();
int height = display.getHeight();
int width = display.getWidth();
final PopupWindow popupWindaow = new PopupWindow(popupView,
(int) (width / 1.4), (int) (height / 2.5));
popupWindaow.showAtLocation(popupView, Gravity.CENTER, 0, 0);
TextView tv1 = (TextView) popupView
.findViewById(R.id.textView1);
tv1.setText("Really delete this entry?");
Button No = (Button) popupView.findViewById(R.id.No);
Button Yes = (Button) popupView.findViewById(R.id.Yes);
Yes.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
//code to delete
}
});
No.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
popupWindaow.dismiss();
}
});
}
});
これがお役に立てば幸いです。