Java 如何从适配器类调用活动方法
我有三节课 mainActivity.javaJava 如何从适配器类调用活动方法,java,android,android-arrayadapter,Java,Android,Android Arrayadapter,我有三节课 mainActivity.java public class mainactivity extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.abc); } public void firs
public class mainactivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.abc);
}
public void firstDialog()
{
//Do something
//call next method
secondDialog()
}
public void secondDialog()
{
//Do something
}
}
接下来是另一个调用适配器类的类
secondclass.java
public class secondclass extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.xyz);
//calling and set adaptor
adapter=new Myadaptopr(this,result);
recyclerlist.setAdapter(adapter);
}
//现在是适配器类
public class Myadaptopr extends RecyclerView.Adapter<Myadaptopr.ViewHolder> {
@Override
public void onBindViewHolder(final MedicineAdaptor.ViewHolder holder, int position) {
//In this function I need to call firstDialog() Method How Do I proceed.
}
}
公共类MyAdapteOpr扩展了RecyclerView.Adapter{
@凌驾
BindViewHolder上的公共无效(最终MedicineAdapter.ViewHolder,内部位置){
//在这个函数中,我需要调用firstDialog()方法如何继续。
}
}
我的问题是:
如何调用mainactivity.java类文件的方法。
我尝试了以下解决方案:
但不起作用,因为mainactivity类不调用并设置适配器。
((mainactivity)context.firstDialog() MainActivity已经停止,因此从该类调用函数没有意义。如果要从适配器调用活动方法,请在创建适配器时在构造函数中传递活动引用。确保要从适配器调用的方法声明为“public”。要调用适配器,只需使用活动引用并调用方法
class MainActivity {
onCreate() {
CustomAdapter ca = new CustomAdapter(MainActivity.this);
}
public methodA() {
}
}
class CustomAdapter {
Activity mActivity;
CustomAdapter(Activity activity) {
mActivity = activity;
}
// Call to function
mActivity.methodA();
}
我建议您使用接口: 首先创建一个接口:
public interface myInterface{
void myMethod();
}
现在,您可以从“活动”扩展接口:
public class mainactivity extends AppCompatActivity implements myInterface
该方法现在需要覆盖注释
在这一点上,您可以简单地(从任何有上下文的地方)调用
你完成了
希望这有帮助,对于任何问题都可以自由提问
编辑
我还有话要说
针对您的目标解决方案:
将第一个活动上下文
作为意图
的参数传递给第二个活动
。然后使用此上下文创建适配器
,而不是使用第二个活动
的“此
”
你应该做什么
使用静态方法创建外部类(新文件)
创建此方法:
public class MyExternalClass{
public static void myMethod(){
//do stuff
}
}
现在,如果需要此方法,请调用以下命令:
MyExternalCkass.myMethod();
您就完成了。什么时候会显示对话框?是否有任何按钮单击?尝试使用回调为什么人们会投票反对该问题。如果我的问题有任何错误,请告诉我。我会改正的。但请在否决投票前让我知道我可以更准确地写出问题。mainactivity act=newmainActivity()代码>并将方法调用为act.firstDialog()代码>这只是为了表示。它可以是点击按钮呼叫或正常呼叫@kgandroidNot help@阿诸我的观点是,主活动不是活动的活动,那么你为什么要首先称之为活动呢。在“secondclass”中添加该功能,并使用上面的答案代码调用它。我需要在其中定义接口。。。在mainactivity或适配器类中,在单独的类文件@AnkurKhandelwalHow中,我将如何将上下文传递给适配器类。因为我不是直接给它打电话。。或context=mainactivity。这将表明您正在传递“活动”。用这个@AnkurKhandelwal@AnkurKhandelwal((myInterface)活动).myMethod();
MyExternalCkass.myMethod();