所以,我想分配一个Spinner 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;
}
我有什么方法可以做到吗?谢谢!
答案 0 :(得分:6)
你可以用setOnTouchListener这样做:
spinner.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Toast.makeText(getBaseContext(), "CLICK", Toast.LENGTH_SHORT).show();
return false;
}
});
答案 1 :(得分:3)
我这样做:
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) { }
}
此外,我建议你获得你正在使用的小组的位置然后处理它。
答案 2 :(得分:0)
min_max.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
//whatever your logic is put it here
}
});
答案 3 :(得分:0)
你不能直接在Spinner上使用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_UP
中,此触摸会像onclick一样。
希望它会对你有所帮助!