第二のスピナー位置から文字列値を取得します。

redface:

私は2つのスピナーを持っています。

まずスピナー値はカトマンズとバクタプルであり、最初のスピナー値に応じて、第二のスピナー値が充填されます。

私の問題は、私はカトマンズを選択して、私は私が期待するものである第二スピナの最初の項目を取得する第二スピナからの最初の項目を選択したときです。

私はバクタプルまたは最初のスピナーからカトマンズ以下のいずれかの項目を選択した場合しかし、その後、第二スピナからの最初の項目の位置を選択する上で私の代わりに「Bageswori」のバクタプルである第一スピナー値そのものを取得します

私は2番目の項目の位置を選択した場合しかし、その後、私は結果が期待される「Balkot」を得るつまり問題はありません。

問題の嘘だから、まずスピナーと最初のアイテムの位置は第2 spinner.It戻るまずスピナーの最初の項目の値の代わりに第二のスピナーから選択された値から最初のアイテムの位置より下の任意の項目を選択したとき。

私のコードです。

public class UploadBook extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
   
    String item = "start";
    String condition = "start"; // for spinner
    FirebaseStorage storage;
    public Books b;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_upload_book);
        getSupportActionBar().setTitle("Upload Room Info");
        getSupportActionBar().setBackgroundDrawable(
                new ColorDrawable(Color.parseColor("#8abe50")));

        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP)
            ActivityCompat.requestPermissions(UploadBook.this, new String[]{android.Manifest.permission.CAMERA, android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 11);
        database = FirebaseDatabase.getInstance();
        dbreference = database.getReference();
        fauth = FirebaseAuth.getInstance();
        mStorageRef = FirebaseStorage.getInstance().getReference();
       
        b1 = (Button) findViewById(R.id.buttonPost);
        spinnerCountry = (Spinner) findViewById(R.id.spinnerCountry);
        //implementing OnItemSelectedListener (need to override the method)

        countryArray = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
        countryArray.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spinnerCountry.setAdapter(countryArray);
        countryArray.add("Kathmandu");
        countryArray.add("Bhaktapur");
        countryArray.add("Lalitpur");
        countryArray.setNotifyOnChange(true);
        spinnerCountry.setSelection(0);
        spinnerDivision = (Spinner) findViewById(R.id.spinnerDivision);
        //implementing OnItemSelectedListener (need to override the method)
        spinnerDivision.setOnItemSelectedListener(this);
        spinnerCountry.setOnItemSelectedListener(this);
        divisionArray = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
        divisionArray.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spinnerDivision.setAdapter(divisionArray);

        postButtonClick();


    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        item = parent.getItemAtPosition(position).toString();
        //first spinner item position
        int countrySpinnerPosition = spinnerCountry.getSelectedItemPosition();
        switch (countrySpinnerPosition){
            case 0:
                //fill data for second spinner
                fillKathmanduDivision();
                break;
            case 1:
                //fill data for second spinner
                fillBhaktapurDivision();
                break;          
        }
        //first spinner item position
    }

    private void fillKathmanduDivision() {
        divisionArray.clear();
        divisionArray.add("Anamnagar");
        divisionArray.add("Balaju");
        divisionArray.notifyDataSetChanged();
    }

    private void fillBhaktapurDivision() {
        divisionArray.clear();
        divisionArray.add("Bageswori");
        divisionArray.add("Balkot");
        divisionArray.notifyDataSetChanged();
    }

   b1.setOnClickListener(new View.OnClickListener() {

   }

   void postButtonClick() {

        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
         
                     Toast.makeText(this, item, Toast.LENGTH_SHORT).show();
          } 
    }
 }

ホッサム・ハッサン:

以下のコードを使用してください:

private String country_id = "", city_id = "";
private ArrayList<String> country_array;

データを使用して配列を埋めるために:

  for (int i = 0; i < items.getResponse().size(); i++) {
      String get_country_name = items.getResponse().get(i).getCode();
      country_array.add(get_country_name);
      }

今すぐあなたの最初のスピナーアダプタ用:

   ArrayAdapter<String> country_spinnerArrayAdapter = new adapter_spinner(getActivity(), R.layout.spinner_header, country_array);
                                    country_spinnerArrayAdapter.setDropDownViewResource(R.layout.spinner_item);
                                    binding.etCountry.setAdapter(country_spinnerArrayAdapter);
                                    binding.etCountry.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                                        @Override
                                        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                                            String selectedItemText = parent.getSelectedItem().toString();
                                            if (position > 0) {
                                                country_id = selectedItemText;
                                                city_id = "";
                                                Load_City(position - 1); // -1 to remove postion of the static country text
                                            }
                                        }

                                        @Override
                                        public void onNothingSelected(AdapterView<?> parent) {
                                        }
                                    });

今すぐあなたの街(第二スピナー)方法:

   private void Load_City(int postion) {
        ArrayList<String> city_array = new ArrayList<String>();
        city_array.add(getString(R.string.city));



        for (int i = 0; i < items.getResponse().get(postion).getCities().size(); i++) {
            String get_city_name = items.getResponse().get(postion).getCities().get(i).getName();
            city_array.add(get_city_name);

        }

        ArrayAdapter<String> country_spinnerArrayAdapter = new adapter_spinner(getActivity(), R.layout.spinner_header, city_array);
        country_spinnerArrayAdapter.setDropDownViewResource(R.layout.spinner_item);
        binding.etCity.setAdapter(country_spinnerArrayAdapter);

        binding.etCity.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String selectedItemText = parent.getSelectedItem().toString();
                if (position > 0) {
                    city_id = selectedItemText;
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
    }

私は、これは助けを願って

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=215388&siteId=1