从Spinner的onItemSelected中执行代码,该代码位于自定义listView中

时间:2019-12-28 11:37:04

标签: java android listview spinner

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

我之前将此代码固定在按钮上,但有时列表中有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之间没有“链接”。当然,在适配器的onItemSelcted内编写同一行代码是行不通的,因为微调框“不单击”。

任何想法如何解决这个问题?

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

1 个答案:

答案 0 :(得分:0)

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

public interface Callback {

void onAction (int a, int b, String c);

}