Java Android-Spinner+;setOnClickListener

Java Android-Spinner+;setOnClickListener,java,android,spinner,onclicklistener,Java,Android,Spinner,Onclicklistener,因此,我想分配一个微调器OnClick,但我得到以下错误 java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead 我需要它在单击微调器时收集数据,然后稍后使用它。 我知道我以前做过,但我把密码弄丢了。在谷歌上搜索答案,我没有找到任何有效的方法。 如果这有帮助,我将使用pagerview

因此,我想分配一个微调器OnClick,但我得到以下错误

     java.lang.RuntimeException: Don't call   setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead

我需要它在单击微调器时收集数据,然后稍后使用它。 我知道我以前做过,但我把密码弄丢了。在谷歌上搜索答案,我没有找到任何有效的方法。 如果这有帮助,我将使用pagerview布局。 这是我的密码:

     public class DATA extends Fragment {
         public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        if (container == null) {
            return null;
        }

  ScrollView GPU_LAYOUT = (ScrollView)inflater.inflate(R.layout.gpu, container, false);

      final TextView higher_than =(TextView) GPU_LAYOUT.findViewById(R.id.gpu_higher_than_value);

        final Spinner min_max =(Spinner) GPU_LAYOUT.findViewById(R.id.min_max_spinner_gpulay);  

        min_max.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                String TMP=min_max.getSelectedItem().toString();
                higher_than.setText(TMP);
            }
        });

       return GPU_LAYOUT;
      }
我有什么办法可以做吗?谢谢大家!

min\u max.setOnItemClickListener(新的OnItemClickListener()
min_max.setOnItemClickListener(new OnItemClickListener()
{
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {

    //whatever your logic is put it here 
 }
}); 
{ @凌驾 公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3){ //不管你的逻辑是什么,把它放在这里 } });
我是这样做的:

public void addListenerOnSpinnerItemSelection() {
        mySpinner = (Spinner) findViewById(R.id.GPU_LAYOUT);  
        mySpinner.setOnItemSelectedListener(new myOnItemSelectedListener());
    }

public class myOnItemSelectedListener implements OnItemSelectedListener {       
@Override
public void onItemSelected(AdapterView<?> parent, View arg1, int pos,long arg3)     {           

int position=Arrays.asList(getResources().getStringArray(R.array.GPU_LAYOUT)).indexOf(fecha);           }

@Override
public void onNothingSelected(AdapterView<?> arg0) {        }       
}
public void addListenerOnSpinnerItemSelection(){
mySpinner=(微调器)findviewbyd(R.id.GPU\u布局);
setOnItemSelectedListener(新的myOnItemSelectedListener());
}
公共类myOnItemSelectedListener实现OnItemSelectedListener{
@凌驾
已选择公共视图(AdapterView父视图、视图arg1、int pos、长arg3){
int position=Arrays.asList(getResources().getStringArray(R.array.GPU_布局)).indexOf(fecha);}
@凌驾
未选择的公共无效(AdapterView arg0){}
}

另外,我建议您获取正在使用的组的位置,然后进行处理。

您可以通过以下方式使用setOnTouchListener:

spinner.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                Toast.makeText(getBaseContext(), "CLICK", Toast.LENGTH_SHORT).show();
                return false;
            }
        });

不能直接在微调器上使用
setOnClickListener
。如果你想这样做,这里有一个技巧

 @Override
public boolean onTouch(View view, MotionEvent motionEvent) {
    switch (view.getId()) {
        case R.id.sp_category:
            if (motionEvent.getAction() == MotionEvent.ACTION_UP)//replacing with onclick
            {
                //Perform any action
            }
            break;
    }
    return true;
}
在此代码
MotionEvent.ACTION\u UP
中,此触摸将表现为onclick。
希望它能帮助你

对不起,你误解了。当我按下微调器时,我需要使用setOnClickListener来收集一些数据,而不是当我从中选择一个项目时。好的,这可能会对你有帮助。不,这没有帮助。非常感谢。“我需要它在单击微调器时收集数据”。请看我的帖子!我不需要你的听众。此外,GPU布局是主要的滚动视图。也许你应该这样做:公共静态类CustomSpinner扩展Spinner{private OnSpinnerEventsListener mListener;@Override public boolean performClick(){mOpenInitiated=true;if(mListener!=null){//这里捕获你想要的数据mListener.onSpinnerOpened();}返回super.performClick();}public void setSpinnerEventsListener(OnSpinnerEventsListener OnSpinnerEventsListener){mListener=OnSpinnerEventsListener;}public void performCloseEvent(){mOpenInitiated=false;if(mListener!=null){mListener.onSpinnerClosed();}