列表视图中的对话框android

时间:2018-01-22 11:21:44

标签: android listview alertdialog

我有listview包含元素和按钮删除,当我点击此按钮时我想显示dialog然后确认或不删除第th个元素,问题是我无法在listview上显示对话框,我对上下文有疑问。

public void onClick(View v) {
    if(v.getId()==R.id.Supprimer){
        AlertDialog.Builder builder = new 
        AlertDialog.Builder(getContext());

        builder.setCancelable(true);
        builder.setTitle("Suppression d'un rendez-vous");
        builder.setMessage("Voulez vous supprimer ce rendez-vous");

        builder.setNegativeButton("Non", new 
        DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.cancel();
            }
        });

        builder.setPositiveButton("Oui", new 
        DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                //alertTextView.setVisibility(View.VISIBLE);
                GestBDD.suppRDV(rdv,getContext());
                adapter.remove(getPosition(rdv));
                cl.notifyDataSetChanged();
                Toast.makeText(getContext(),"Rendez vous 
                supprimé",Toast.LENGTH_LONG).show();
            }
        });
        builder.show();

        }
        }

错误发生在builder.show()行,它说

     W/System.err:     at 
     com.example.hp.bendaoudtest.RDVAdapter.onClick(RDVAdapter.java:110)

2 个答案:

答案 0 :(得分:2)

AlertDialog仅接受活动上下文而非应用程序上下文。如果您的getContext()获得应用程序上下文,您将收到错误消息。您的getContext()方法应返回活动上下文,可以通过发送this作为构造函数参数从您正在使用的活动类进行实例化。不要将getApplicationContext()作为构造函数参数发送。例如:

RVDAdapter rvdadapter = new RVDAdapter(this);

答案 1 :(得分:1)

使用

select t.*,j.* from yourtable t cross apply parseJSON(t.jsonColumn) j

 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

而不是AlertDialog dialog = builder.create(); dialog.show(); 以获取更多信息 https://developer.android.com/guide/topics/ui/dialogs.html