我想从我的活动中向适配器发送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;
}
}
}
适配器位于活动内部的片段中。我可以看到有关活动的祝酒词,但没有显示适配器的祝酒词。知道是什么问题吗?
男人!您需要检查此链接
https://developer.android.com/training/basics/fragments/communicating#DefineInterface
在承载您的适配器的片段中定义一个接口,然后该片段将为您将数据从活动发送到适配器。