如何检测Spinner是否在Android上单击打开

时间:2016-02-11 02:32:04

标签: 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 void onSuccess(final Response response) {
  Helper.update(...);
}


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

然后再次触发getDropDownView()。用户点击打开除getDropDownView()之外的微调器后,我无法弄清楚还有其他调用。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:8)

您可以在Spinner上设置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表现正常。我希望它对你有用。