0

私のアプリケーションでは、2 つのスピナー (職業、サブ職業) があり、最初のスピナーは文字列の配列から取り込まれ、2 番目のスピナーは最初のスピナーで選択された値に基づいて取り込まれます。

両方のスピナーの選択された値は、SQLite データベースに保存されます。保存後、ユーザーはレコードを編集できるため、編集するレコードを表示しながら、ユーザーが最後に選択したスピナーに特定の値を表示したいと考えています。

そうしようとすると、最初のスピナーの値は正しく設定されますが、2 番目のスピナーの値を設定できません。そのスピナーの配列の最初の値が常に表示されます。

編集ページでスピナーに値を割り当てるコードは次のとおりです。

    if (bundlevalue.get(21).equalsIgnoreCase("Salaried")) {
        spin_occupation.setSelection(0);
        if(bundlevalue.get(22).equalsIgnoreCase("Others"))
        {
            spin_subOccu.setSelection(4);
            occuSubArrayAdap.notifyDataSetChanged();
        }
        else if(bundlevalue.get(22).equalsIgnoreCase("Police"))
        {
            spin_subOccu.setSelection(1);
            occuSubArrayAdap.notifyDataSetChanged();
        }
        else if(bundlevalue.get(22).equalsIgnoreCase("Legal Profession"))
        {
            spin_subOccu.setSelection(2);
            occuSubArrayAdap.notifyDataSetChanged();
        }
        else if(bundlevalue.get(22).equalsIgnoreCase("Central/State Government"))
        {
            spin_subOccu.setSelection(3);
            occuSubArrayAdap.notifyDataSetChanged();
        }
        else
        {
            spin_subOccu.setSelection(0);
            occuSubArrayAdap.notifyDataSetChanged();
        }
    }
     else if (bundlevalue.get(21).equalsIgnoreCase(
            "Self employed non professional")) {
        spin_occupation.setSelection(1);
        if(bundlevalue.get(22).equalsIgnoreCase("Others"))
        {
            spin_subOccu.setSelection(5);
            occuSubArrayAdap.notifyDataSetChanged();
        }
        else if(bundlevalue.get(22).equalsIgnoreCase("Travel Agent /Telecommunication Service/Tours&Travels"))
        {
            spin_subOccu.setSelection(1);
            occuSubArrayAdap.notifyDataSetChanged();
        }
        else if(bundlevalue.get(22).equalsIgnoreCase("Restaurant/Hotels/Resorts"))
        {
            spin_subOccu.setSelection(2);
            occuSubArrayAdap.notifyDataSetChanged();
        }
        else if(bundlevalue.get(22).equalsIgnoreCase("Retail Stores"))
        {
            spin_subOccu.setSelection(3);
            occuSubArrayAdap.notifyDataSetChanged();
        }
        else if(bundlevalue.get(22).equalsIgnoreCase("Money Changers/Money Lenders/Real Estate"))
        {
            spin_subOccu.setSelection(4);
            occuSubArrayAdap.notifyDataSetChanged();
        }
        else
        {
            spin_subOccu.setSelection(0);
            occuSubArrayAdap.notifyDataSetChanged();
        }

コードの何が問題になっていますか? 誰か説明してくれませんか?

助けてください!

前もって感謝します!

4

2 に答える 2

0

1 番目のスピナー setOnItemSelectedListener の 2 番目のスピナーの配列リストを更新します

spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            // TODO Auto-generated method stub


                string str=spinner1.getSelectedItem().toString();
                if(str.equals("spinner item"))//spinner item is selected item of spinner1
                {
                    ArrayAdapter<String>adapter1 = new ArrayAdapter<String>(this,
                        android.R.layout.simple_list_item_1, array1);

             spinner2.setAdapter(adapter1);//pass this updated adapter1 to second spinner
                }else if{
               ArrayAdapter<String>adapter1 = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, array2);

             spinner2.setAdapter(adapter2);

    }
        }
于 2013-10-11T09:17:03.187 に答える
0

OnItemClickListener() を super_spinner に設定し、アイテムが選択されたら、sub_spinner に渡した Adapter の値を変更しようとします。

super_spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            // change adapter values of sub_spinner here !!
        }
    });
于 2013-10-11T09:13:21.143 に答える