Java Android-Spinner+;setOnClickListener
因此,我想分配一个微调器OnClick,但我得到以下错误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
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();}