android - 第二个AlertDialog列表项点击基于第一个Alertdialog列表android

标签 android linked-list hashmap mapping android-alertdialog

在我的 android 应用程序中,我需要生成一个带有公司名称列表的警报对话框。例如公司 1、公司 2、公司 3。现在如果用户单击公司 1,他将获得第二个警报对话框,其中将显示一些操作。像电话、电子邮件等。现在我已经在我的代码中实现了这两个警报对话框。但我想做的是,每家公司都应该有不同的电话号码和电子邮件地址。到目前为止,我已经尝试过与所有公司使用相同的号码。但实际上如果用户点击公司 1,他将获得第二个行动警报列表,包括电话、电子邮件。如果他点击电话选项,他将看到公司 1 的电话号码,如果他点击公司 2,他将获得带有公司 2 电话号码的警报选项。但我在开发区很新。我知道有一些关于映射主题的东西,通过它我可以很容易地做到这一点,但我实际上并不知道如何继续它。我的代码是这样的

    public List<CompanyDetail> setCompanydata(){
    int n = 3;
    private List<CompanyDetail> companyDetailList = new ArrayList<CompanyDetail>(); //modifier private is not allowed here
    private HashMap<String, List<CompanyDetail>> companyContactDetail = new HashMap<String, List<CompanyDetail>>(); //modifier private is not allowed here
    for(int i=0;i<n;i++){
        private CompanyDetail  comD= new CompanyDetail(); //modifier private is not allowed here
        comD.setcompanyPhoneNo(companyPhoneno); //cannot resolve problem companyPhone
        comD.setcompanyEmail(compnayEmailId);
        companyDetailList.add(comD);
        companyContactDetail.add(companyname, companyDetailList);//cannot resolve method 'add(?,java util list..
    }

    return companyContactDetail; //incompatible type

}
private List<CompanyDetail> companyDetailList;
private HashMap<String, List<CompanyDetail>> companyContactDetail = new HashMap<String, List<CompanyDetail>>();
companyContactDetail =  setCompanydata(); //unknown class company contact deatil

private void showFirstDialogwithList() {

    //Create a new builder and get the layout.
    final AlertDialog.Builder builder = new AlertDialog.Builder(this.getActivity());
    LayoutInflater inflater = this.getActivity().getLayoutInflater();
    View dialogView = inflater.inflate(R.layout.first_alertlist_contact, null);
    builder.setView(dialogView);
    builder.setCancelable(true);
    //Show the dislog
    final AlertDialog alert = builder.show();
    //Get the TextView, ListView, Button from the layout.
    TextView alertTitle = (TextView) dialogView.findViewById(R.id.title);
    Button alertButton = (Button) dialogView.findViewById(R.id.cancel_button);
    ListView alertListView = (ListView) dialogView.findViewById(listView1);

    alertTitle.setText("Contact");
    // Defined Array values to show in ListView
    String[] values = getResources().getStringArray(R.array.company_name);


    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this.getActivity(), R.layout.first_alertlist_textstyle, android.R.id.text1, values);
    alertListView.setAdapter(arrayAdapter);

    alertButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            alert.dismiss();
        }
    });

    alertListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            // ListView Clicked item index
            int itemPosition = position;

            if (itemPosition == 0) {
                alert.dismiss();
                showSecondDialogwithList();
            }

            if (itemPosition == 1) {
                alert.dismiss();
                showSecondDialogwithList();
            }
            if (itemPosition == 2) {
                alert.dismiss();
                showSecondDialogwithList();
            }

        }

    });
}

private void showSecondDialogwithList() {

    final AlertDialog.Builder builder = new AlertDialog.Builder(this.getActivity(), R.style.DialogStyle);
    LayoutInflater inflater = this.getActivity().getLayoutInflater();
    View dialogView = inflater.inflate(R.layout.first_alertlist_contact, null);
    builder.setView(dialogView);
    setStyle(DialogFragment.STYLE_NORMAL, R.style.DialogStyle);

    //Show the dislog
    final AlertDialog alert = builder.show();

    //Get the TextView, ListView, Button from the layout.
    TextView alertTitle = (TextView) dialogView.findViewById(R.id.title);
    Button alertButton = (Button) dialogView.findViewById(R.id.cancel_button);
    final ListView alertListView = (ListView) dialogView.findViewById(listView1);

    alertTitle.setText("What do you want to do");
    // Defined Array values to show in ListView
    String[] values = getResources().getStringArray(R.array.contact_way);

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getActivity(),
            R.layout.first_alertlist_textstyle, android.R.id.text1, values);
    alertListView.setAdapter(adapter);

    alertButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            alert.dismiss();
        }
    });

    alertListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            // ListView Clicked item index
            int itemPosition = position;

            if (itemPosition == 0) {

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

                builder.setTitle("+1234667");
                builder.setPositiveButton("Call", new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int which) {
                        // close the dialog, go to login page
                        if(isPermissionGranted()){
                            call_action();
                        }
                    }
                });
                builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // Do nothing
                        dialog.dismiss();
                    }
                });

                AlertDialog alert = builder.create();
                alert.show();

            }
            if (itemPosition == 1) {
                alert.dismiss();
                ......;

            }
            if (itemPosition == 2) {
                dismiss();
                showEmail();

            }
            if (itemPosition == 3) {
                dismiss();

            }
        }
    });

}

我的字符串数组是

    <string-array name="company_name">
    <item>company 1</item>
    <item>Company 2</item>
    <item>Company 3</item>
</string-array>

<!-- AlertDialog way of Contact array -->
<string-array name="contact_way">
    <item>Phone Call</item>
    <item>Email</item>
</string-array>

<String-array name="phone">
    <item>123456</item>
    <item>125658</item>
    <item>123451</item>
</String-array>

<String-array name="email">
    <item>email1</item>
    <item>email2</item>
    <item>email2</item>
</String-array>

最佳答案

您可以传递项目的位置并在您的函数中测试它,或者您可以直接传递它:

@Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        alert.dismiss();
        showSecondDialogwithList(position);
    }

private void showSecondDialogwithList(int position) {
    String phoneNumber;
    switch (position) {
        case 1:
            phoneNumber = "123";
            break;
        case 2:
            phoneNumber = "456";
            break;
        case 3:
            phoneNumber = "789"
    }
    final AlertDialog.Builder builder = new AlertDialog.Builder(this.getActivity(), R.style.DialogStyle);
    LayoutInflater inflater = this.getActivity().getLayoutInflater();
    View dialogView = inflater.inflate(R.layout.first_alertlist_contact, null);
    builder.setView(dialogView);
    setStyle(DialogFragment.STYLE_NORMAL, R.style.DialogStyle);
    //Show the dislog
    final AlertDialog alert = builder.show();
    //Get the TextView, ListView, Button from the layout.
    TextView alertTitle = (TextView) dialogView.findViewById(R.id.title);
    Button alertButton = (Button) dialogView.findViewById(R.id.cancel_button);
    final ListView alertListView = (ListView) dialogView.findViewById(listView1);

    alertTitle.setText("What do you want to do");
    // Defined Array values to show in ListView
    String[] values = getResources().getStringArray(R.array.contact_way);

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getActivity(),
            R.layout.first_alertlist_textstyle, android.R.id.text1, values);
    alertListView.setAdapter(adapter);

    alertButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            alert.dismiss();
        }
    });

    alertListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            // ListView Clicked item index
            int itemPosition = position;
            if (itemPosition == 0) {
                alert.dismiss();
                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                builder.setTitle("+1234667");
                builder.setPositiveButton("Call", new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int which) {
                        // close the dialog, go to login page
                        if (isPermissionGranted()) {
                            call_action();
                        }
                    }
                });
                builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // Do nothing
                        dialog.dismiss();
                    }
                });

                AlertDialog alert = builder.create();
                alert.show();

            }
            if (itemPosition == 1) {
                alert.dismiss();
            ......;

            }
            if (itemPosition == 2) {
                dismiss();
                showEmail();

            }
            if (itemPosition == 3) {
                dismiss();

            }
        }
    });

}

关于android - 第二个AlertDialog列表项点击基于第一个Alertdialog列表android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45029566/

相关文章:

algorithm - 在包含数百万个节点的链表中查找循环

java - 包含多个 "keys"的列表对象

java - 如何从 HashMap 中的对象访问该对象的 HashMap。 ( java )

java - 立即选择微调器后禁用编辑文本

android - 如何在 Android 2.0 上读取联系人

android - 调用 "DisplayManagerGlobal.getDisplayInfo()"导致应用程序中的应用程序无响应 (ANR)

java - 拆分不同范围内的数字

java - Webview 为空白或为不同的 url 加载同一页面

c++ - 双向链表中循环的开始?

c - 在C中的有序链表中插入一个节点