Android 接口活动和适配器

Android 接口活动和适配器,android,android-activity,interface,android-recyclerview,Android,Android Activity,Interface,Android Recyclerview,我想从活动向适配器发送0/1。这是我的代码: OnActivityButtonClickedListener: public interface OnActivityButtonClickedListener { public void OnActivityButtonClicked(int id); } 主要活动: public class MainActivity extends AppCompatActivity{ private TabLayout mainTabLa

我想从活动向适配器发送0/1。这是我的代码:

OnActivityButtonClickedListener:

public interface OnActivityButtonClickedListener {
    public void OnActivityButtonClicked(int id);
}
主要活动:

public class MainActivity extends AppCompatActivity{

    private TabLayout mainTabLayout;
    private ViewPager mainViewPager;
    private OnActivityButtonClickedListener mListener = sDummyCallbacks;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mainTabLayout = findViewById(R.id.MainTabLayout);
        mainViewPager = findViewById(R.id.MainViewPager);
        MainViewPagerAdapter adapter = new MainViewPagerAdapter(this, getSupportFragmentManager());
        mainViewPager.setAdapter(adapter);

        MainActionModeSelectAll = findViewById(R.id.MainActionModeSelectAll);
        MainActionModeCancel = findViewById(R.id.MainActionModeCancel);

        MainActionModeSelectAll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mListener.OnActivityButtonClicked(0);
                Toast.makeText(getBaseContext(), "mListener got 0", Toast.LENGTH_SHORT).show();
            }
        });

        MainActionModeCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mListener.OnActivityButtonClicked(1);
                Toast.makeText(getBaseContext(), "mListener got 1", Toast.LENGTH_SHORT).show();
            }
        });
    }

    private static OnActivityButtonClickedListener sDummyCallbacks = new OnActivityButtonClickedListener() {
        @Override
        public void OnActivityButtonClicked(int id) {
        }
    };

}
适配器:

public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> implements OnActivityButtonClickedListener {
    @Override
    public void OnActivityButtonClicked(int id) {
        switch (id) {
            case 0:
                Toast.makeText(mContext, "0" ,Toast.LENGTH_LONG).show();
                //do something
                break;
            case 1:
                Toast.makeText(mContext, "1" ,Toast.LENGTH_LONG).show();
                //do something else
                break;
        }
    }
}
公共类适配器扩展了RecyclerView。适配器实现了OnActivityButtonClickedListener{
@凌驾
激活按钮点击时的公共无效(int id){
开关(id){
案例0:
Toast.makeText(mContext,“0”,Toast.LENGTH_LONG.show();
//做点什么
打破
案例1:
Toast.makeText(mContext,“1”,Toast.LENGTH_LONG.show();
//做点别的
打破
}
}
}
适配器位于活动内的片段内。
我可以看到活动上的祝酒词,但适配器上的祝酒词未显示。知道问题出在哪里吗?

伙计!你需要检查这个链接


在片段中定义一个承载适配器的接口,然后片段将为您将活动中的数据发送到适配器。

请下次正确发布代码,或者至少正确编写代码。如果要将某个活动中的某个内容发送到适配器,请在适配器中创建一个将“something”作为其参数的方法。然后让活动保留适配器的一个实例。这里不需要接口。@添加了更多代码。因为我的适配器在片段中,所以我需要接口。谢谢您的时间。好的,步骤1:在承载适配器的片段内定义接口(IA)步骤2:使承载片段的活动实现此(IA)接口步骤3:在需要时触发接口(IA)。然后,当活动触发接口时,片段将得到通知,并且片段可以向适配器发送数据,因为它已经引用了它。