【问题标题】:Execute code from Spinner's onItemSelected that's in custom listView从自定义 listView 中的 Spinner 的 onItemSelected 执行代码
【发布时间】:2019-12-28 19:42:26
【问题描述】:

我有一个带有 3 个微调器的自定义 listView。我想在 onItemSelected 中执行代码,但我不能在适配器中执行此操作,因为我需要执行的某些部分代码在适配器中不起作用。

我之前将此代码固定到一个按钮上,但有时列表中有超过 20-30 个元素,我需要在用户从微调器中选择一个值后立即“自动”执行此操作以节省一些时间。

对于一个按钮,我有这个代码:

((ListView) parent).performItemClick(v, position, 0);

在我在适配器中创建的 setOnClickListener 中。在适配器中使用此代码后,我可以通过编写如下代码来执行适配器外部的任何代码:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                long viewId = view.getId();

                if(viewId == R.id.button){
                    myCode(); } 

我发现没有办法做类似的事情,因为内部适配器 onItemSelcted 和外部适配器 onItemSelcted 之间没有“链接”。当然,在适配器的 onItemSelected 中编写相同的代码行是行不通的,因为微调器“不点击”。

知道如何解决这个问题吗?

简而言之:我需要为自定义 listView 元素内部的微调器执行 onItemSelected,但需要在 onCreate 方法中的适配器外部执行此操作。

【问题讨论】:

    标签: java android listview spinner


    【解决方案1】:

    您可以创建一个 CallbackInterface 并在“外部”创建它的一个实例,然后将其传递到“内部”,在那里您可以使用所需的参数调用回调函数。

    public interface Callback {
    
    void onAction (int a, int b, String c);
    
    }
    

    【讨论】:

      猜你喜欢
      • 2011-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多