Android 接口活动和适配器
我想从活动向适配器发送0/1。这是我的代码: OnActivityButtonClickedListener: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
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)。然后,当活动触发接口时,片段将得到通知,并且片段可以向适配器发送数据,因为它已经引用了它。