【发布时间】:2012-09-24 10:02:10
【问题描述】:
我有一个关于 android spinner onItemClickListener() 的问题。
我知道 onItemClickListener 不适用于微调器,所以我只是自定义微调器类并覆盖微调器类的 setOnItemClickListener() 方法。
以下是我自定义的代码......
import android.content.Context;
import android.content.DialogInterface;
import android.util.AttributeSet;
import android.widget.Spinner;
public class MySpinner extends Spinner {
private OnItemClickListener onItemClickListener;
public MySpinner(Context context) {
super(context);
}
public MySpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MySpinner(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void onClick(DialogInterface dialog, int which) {
super.onClick(dialog, which);
if (this.onItemClickListener != null) {
this.onItemClickListener.onItemClick(this, this.getSelectedView(), which, this.getSelectedItemId());
}
}
@Override
public void setOnItemClickListener(android.widget.AdapterView.OnItemClickListener l) {
this.onItemClickListener = l;
}
}
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
public class SpinnerOnItemClickActivity extends Activity implements OnItemClickListener {
private MySpinner spinner;
String[] str_arr = new String[]{"abc", "efg", "hij"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spinner_on_item_click);
spinner = (MySpinner) findViewById(R.id.spinner1);
spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, str_arr));
this.spinner.setOnItemClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_spinner_on_item_click, menu);
return true;
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
Log.i("Test", "********************Spinner Item Click**************************" + position);
}
}
上面的代码在 android 2.2 和 2.3 版本上可以完美运行,但它不适用于 android 4.0 及更高版本。
我已经调试了代码,发现在 android 4.0 版本中没有调用 spinner 类的 onClick() 方法。
任何帮助都会很重要。
谢谢。
【问题讨论】:
标签: android spinner onitemclicklistener onitemclick