我的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。
答案 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)
我已尝试通过将适配器移至主要代码进行尝试。这是工作。不知道它是如何工作的。请任何人给我一个解释。