接口活动和适配器

问题描述 投票:-1回答:1

我想从我的活动中向适配器发送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;
        }
    }
}

适配器位于活动内部的片段中。我可以看到有关活动的祝酒词,但没有显示适配器的祝酒词。知道是什么问题吗?

android android-activity interface recycler-adapter
1个回答
0
投票

男人!您需要检查此链接

https://developer.android.com/training/basics/fragments/communicating#DefineInterface

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

© www.soinside.com 2019 - 2024. All rights reserved.