如何将用户输入的值添加到android中的微调器?

时间:2016-02-16 22:26:41

标签: android spinner android-spinner

我创建了一个微调器,其中一个选项是“添加URL”。当选择“添加网址”时,它会弹出一个警报,允许用户输入新的网址。所有这一切都有效。问题是它没有将新url添加到微调器。我在用户添加新网址后通知数组适配器。我该如何解决这个问题,以便将新的url值放入微调器。

这是我的微调器代码:

Spinner spinner = (Spinner) findViewById(R.id.spinner);

// Create an ArrayAdapter using the string array and a default spinner layout
ArrayList<String>urls = new ArrayList<String>(Arrays.asList(getResources().getStringArray(R.array.url_array)));
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, urls);

// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);

spinner.setOnItemSelectedListener(this);

这是onItemSelected()的代码:

public void onItemSelected(AdapterView<?> parent, View view, int pos, long l) {
    if (pos==3) {
        // Set an EditText view to get user input
        final EditText input = new EditText(DeviceServicesActivity.this);

        new AlertDialog.Builder(DeviceServicesActivity.this)
                .setMessage("Enter your Point here")
                .setView(input)
                .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        Editable editable = input.getText();
                        String newString = editable.toString();

                        urls.add(newString);
                        adapter.notifyDataSetChanged();



                    }
                })
                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        // Do nothing.
                    }
                }).show();
    }
}

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

}

每当我尝试添加url时,我都会在logcat中发现此消息:W / InputEventReceiver:尝试完成输入事件但输入事件接收器已经被处理掉。

1 个答案:

答案 0 :(得分:4)

而不是使用

  urls.add(newString);

使用

  adaptor.setNotifyOnChange(true);
  adapter.add(newString);

这可能会帮助你