Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android上检测微调器是否单击打开_Java_Android_Android Spinner - Fatal编程技术网

Java 如何在Android上检测微调器是否单击打开

Java 如何在Android上检测微调器是否单击打开,java,android,android-spinner,Java,Android,Android Spinner,我有一个微调器,我想检测用户何时单击它。 当用户单击它打开时,我想调用一个端点,然后用新数据更新微调器。 但我不知道该怎么做,结果导致无限循环: 我在这里调用API: public View getDropDownView(int position, View convertView, ViewGroup parent) { // Call API here // Do render with old data. } 当API成功时,我调用更新: @Override public vo

我有一个微调器,我想检测用户何时单击它。 当用户单击它打开时,我想调用一个端点,然后用新数据更新微调器。 但我不知道该怎么做,结果导致无限循环:

我在这里调用API:

public View getDropDownView(int position, View convertView, ViewGroup parent) {
  // Call API here
  // Do render with old data.
}
当API成功时,我调用更新:

@Override
public void onSuccess(final Response response) {
  Helper.update(...);
}


public void update(...) {
  ...
  adapter.setItems(newData);
  adapter.notifyDataSetChanged();
}

然后再次触发
getDropDownView()
。除了
getDropDownView()
之外,我想不出在用户单击打开微调器之后还调用了什么。如何解决此问题?

您可以在微调器上设置Touch listener以检测单击

 findViewById(R.id.spinner).setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Toast.makeText(MainActivity.this,"CallAPI",Toast.LENGTH_SHORT).show();
            return false;
        }
    });

并从onTouch返回False,使其行为正常。我希望它对您有效

注意,不应返回false,而应返回View v.performOnClick(),使其正常工作,并且在单击微调器打开和关闭项目时,也会调用此onTouch。