java - 单击时如何触发微调器事件?

标签 java adapter android-spinner

我遵循了一些例子。他们正在介绍如下方式。但是当我尝试这样做时,我收到了这个错误

java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead
    at android.widget.AdapterView.setOnClickListener(AdapterView.java:1224)
    at com.jakchang.savelocation.databinding.ActivityViewmemoBindingImpl.executeBindings(ActivityViewmemoBindingImpl.java:174)

我只是按照示例进行操作,但它对我不起作用。

需要帮助..提前致谢

 resList = res.getStringArray(R.array.font_spinner);

    SpinnerAdapter spinnerAdapter= new ArrayAdapter(this,R.layout.support_simple_spinner_dropdown_item,resList);
        binding.fontlist.setAdapter(spinnerAdapter);
        binding.fontlist.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(getApplicationContext(),"Item : "+binding.fontlist.getItemAtPosition(position),Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

最佳答案

您的代码片段不完整,但我尝试在自己的 Activity 中实现它,因此请检查以下代码并将其与您的解决方案进行比较。我认为它应该有效。

public class MainActivity extends AppCompatActivity {
    Spinner spinner;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        spinner = findViewById(R.id.spinner);
        SpinnerAdapter spinnerAdapter= new ArrayAdapter(this, android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.font_spinner));
        spinner.setAdapter(spinnerAdapter);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(getApplicationContext(),"Item : "+ spinner.getItemAtPosition(position),Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    }
}

首先,您需要获取 View 并将其存储在使用 findViewById(R.id.spinner) 的类变量中,当然您必须在 xml 文件中设置 id。接下来在 ArrayAdapter 中使用 android.R.layout.simple_spinner_item 只是为了保持简单。最后在 spinner 对象上设置适配器和监听器。

关于java - 单击时如何触发微调器事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59543883/

相关文章:

java - 动态添加和删除 Spring Boot 健康检查

java - 如何使用源导入 org.eclipse.pde.internal?

android - 正确实现 Custom Adapter 以使用 Picasso 显示图像

java - 我的适配器做错了什么?

android - 如何根据数据库值在 android spinner 中选择一个值?

java - 在我的 java 应用程序中正确实现邮件发送

java - 有没有设计良好、维护良好的 Java RSS 解析库?

java - 如何在 Android 中创建 JSON?

android - NavigationDrawer,带有图像的适配器

android - 在 android 中不使用 findViewById() 查找所有微调器 View