下拉列表错误。无法从下拉列表中选择

时间:2019-03-26 04:25:16

标签: java android

我的Android项目中有一个Dropdown Spinner。以前它可以正常工作,但是在我更改了一些代码之后,它存在一些错误,而且我找不到。

当我单击微调器时,列表下拉列表中有一个可供选择的选项。但是,当我选择任何选项时,微调器不会将微调器设置为任何选项。当我登录selectedPosition时,它显示为“ -1”

以下是我的一些代码。请帮帮我,告诉我造成这种情况的原因是什么。

public void getDefaultPallet(String pasted) {

    String pass = getLookupTable(this);
    try {
        JSONObject jsonObject = new JSONObject(pass);
        String receive_fields = jsonObject.getString("PalletType");
        JSONArray jsonArray = new JSONArray(receive_fields);

        if (pasted.equals("")){
            list.add("");
            passvalue.add("");
        }

        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jobj = jsonArray.getJSONObject(i);
            passvalue.add(jobj.getString("Key"));
            list.add(jobj.getString("Value"));
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }

}

我获取ArrayList <>;

public void dialog() {
    dialog = new Dialog(AddTallyInActivity.this);
    dialog.setContentView(R.layout.dialog_assign_pallet);
    dialog.setCancelable(false);

    dialog_spinner = dialog.findViewById(R.id.spinner_dialog);
    dialog_ok = dialog.findViewById(R.id.btn_dialog_ok);

    adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, list);
    dialog_spinner.setAdapter(adapter);

    for (int i = 0; i<list.size();i++){
        if (list.get(i).equals(default_pallet)){
            dialog_spinner.setSelection(i);
        }
    }

    dialog_ok.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (dialog_et.getText().toString().isEmpty()) {
                dialog_et.setError("Do not blank.");
            } else {
              tv_palletno.setText(dialog_et.getText().toString());
              tv_pallettype.setText(passvalue.get(dialog_spinner.getSelectedItemPosition()));

                dialog.dismiss();
            }
        }
    });
    dialog.show();

}

对话框中的DropdownSpinner。

3 个答案:

答案 0 :(得分:0)

尝试

tv_pallettype.setText(dialog_ok.get);

答案 1 :(得分:0)

使用dialog_ok.setOnClickListener代替使用dialog_ok.setOnItemSelectedListener,如下所示:

dialog_ok.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
            if (dialog_et.getText().toString().isEmpty()) {
                dialog_et.setError("Do not blank.");
            } else {
                tv_palletno.setText(dialog_et.getText().toString());
                tv_pallettype.setText(passvalue.get(position));

                dialog.dismiss();
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

答案 2 :(得分:0)

我已尝试通过将适配器移至主要代码进行尝试。这是工作。不知道它是如何工作的。请任何人给我一个解释。