【问题标题】:How do I find the View ID for the spinner itself?如何找到微调器本身的视图 ID?
【发布时间】:2012-03-14 12:36:58
【问题描述】:

我想在第一次单击微调器时为它实现一个 onclicklistener。

findViewById(R.id.spinner01) 将返回一个 AdapterView,您无法使用它实现 onClickListener。

有没有一种方法可以确定在显示 AdapterView 之前在布局中显示的实际按钮样式灰色实例的 View ID(如非 AdapterView ID)?

【问题讨论】:

  • 你能把你的 XML 粘贴到这里吗..
  • 我不太明白你的问题...如果你想使用按钮,为什么不使用 findViewById(ButtonId)?
  • 我认为您不需要为此实现 onClickListener ...您必须实现 onItemClickListener
  • onItemClickListener 将在从 AdapterView 中选择项目时运行。我想知道第一次单击微调器的时间...

标签: android android-adapterview


【解决方案1】:

如果您在 XML 中引用 Spinner 的 android:id,您使用 findViewById 获得的视图实际上会返回一个 Spinner 对象。因为当它第一次被点击时,只需给微调器一个 onClickListener,如 vipin 或匿名监听器所示。

Spinner spinner = (Spinner) findViewById(R.id.YOUR_SPINNER_ID);
spinner.setOnClickListener(new OnClickListener() );

并在onClickListener中实现onClick函数(应该是Eclipse自动为你生成的。

【讨论】:

  • Spinner 在我调用 setOnClickListener 时为我产生此错误:“RuntimeException: Don't call setOnClickListener for an AdapterView”
  • 通常你会使用 onItemSelectedListener 来选择微调器。试试 OnTouchListener 看看是否有错误。假设有一个用于打开对话框进行选择的默认操作,它应该可以分配多个侦听器。
  • 分配 OnYuchListener 会产生与 AdapterView 的 OnClickListener 相同的错误...
【解决方案2】:

试试这个

public class yourActivity extends Activity implements OnClickListener
{
 @Override
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(RESOURCE_ID);

        Spinner spin = (Spinner)findViewById(R.id.spinner_id);
        spin.setOnClickListener(this);
        }
          public void onClick(View arg0) {
        if(arg0.getId()==R.id.spinner_id)//arg0.getId() will return you id of spinner         {
              //your code
            }   
    }

} 

【讨论】:

  • Spinner 在我调用 setOnClickListener 时为我产生此错误:“RuntimeException: Don't call setOnClickListener for an AdapterView”
  • 尝试使用 setOnTouchlistener 而不是 setOnclickListener
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多