android中两个适配器之间的通信?

android中两个适配器之间的通信?,android,adapter,stackview,Android,Adapter,Stackview,我在单个activity StackView和Gridview中有两个视图以及两个相应的适配器。当我单击StackView项时,它应该在Gridview中翻转网格项,反之亦然?//activity classs public class SampleActivity extends Activity implements OnGridChangeListener { public void onCreate(bundle){ // replace this with yo

我在单个activity StackView和Gridview中有两个视图以及两个相应的适配器。当我单击StackView项时,它应该在Gridview中翻转网格项,反之亦然?

//activity classs

  public class SampleActivity extends Activity implements    
  OnGridChangeListener {

  public void onCreate(bundle){
 // replace this with your adapter class. 
 Adapter adapter = new adapter(this); 
 }

 @override
 public void OnGridChange(){
   //here you go.
  // write code to do what you want.
}

    // interface to communicate with activity
  public interface OnGridChangeListener {
       public void OnGridChange()
   }


   // adaptor class
  public class Adaptor extends "you apapter class to extend"{

  OnGridChangeListener onGridChangeListener ;

  public Adapter(OnGridChangeListener  listener){
     onGridChangeListener =listener
   }

 public getView(){

   public void onclick(){
      onGridChangeListener.OnGridChange("pass you data");
}
}

 }
根据你的问题,这是我得到的-

您有一个具有两个独立视图的活动,它们有自己的适配器。因此,当其中一个适配器发生更改时,您希望它反映到另一个适配器中

查询的简单解决方案是-

  • 当第一个适配器发生更改时,您会将更改反映到活动中。然后调用第二个适配器中的函数,以反映您希望在第二个适配器中进行的更改
  • 为此,您必须在第一个适配器中定义一个接口,并实现此is活动
  • 当第一个适配器更改时,调用接口方法,这将反映在活动中
  • 然后调用第二个适配器中的方法来进行所需的更改
  • 代码示例-

    MainActivity.Java

    第一类

    我以recylerview适配器为例

    public class FirstAdapter extends RecyclerView.Adapter<FirstAdapter.ViewHolder>{
    
    public FirstAdapter(Context context){
      this.context=context;
      }
    
    /*
      all the boilerplate codes and business logic
     */
    
    //when you want to reflect the changes
    callBackMethods callBackMethods = (callBackMethods) context;
    callBackMethods.callback();
    //this will fireup the implementation in the MainActivity.
    
    public interface callBackMethods{
      public void callback();
      }
    }
    
    公共类FirstAdapter扩展了RecyclerView.Adapter{ 公共第一适配器(上下文){ this.context=context; } /* 所有样板代码和业务逻辑 */ //当您想要反映更改时 callBackMethods callBackMethods=(callBackMethods)上下文; callBackMethods.callback(); //这将激发main活动中的实现。 公共接口回调方法{ 公共无效回调(); } } 第二类

    这就是变化的反映

    public class SecondAdapter extends RecyclerView.Adapter<SecondAdapter.ViewHolder>{
    
    /*
      all the boilerplate codes and business logic
     */
    
    public void reflectChanges(){
       /*
        This method will be called from the MainActivity. pass whatever params you want to pass from Activity and do the changes you want to do in the SecondAdapter.
        */
      }
    }
    
    公共类SecondAdapter扩展了RecyclerView.Adapter{ /* 所有样板代码和业务逻辑 */ 公共void reflectChanges(){ /* 将从MainActivity调用此方法。请传递希望从Activity传递的任何参数,并在SecondAdapter中进行更改。 */ } }
    我希望这能解决你的问题。快乐编码…

    您是否正在使用片段进行编码?无活动!!没关系,对吧!!不,但我想相应地回答。是的,我正在使用活动,它应该只在活动中完成!!这个问题需要更清楚的解释吗?您的适配器类是活动中的还是它的单独类?下面是一个示例想法来实现您想要的。你也可以为其他适配器定义相同的选项。你使用StackView吗?当我们刷一个StackItem时,它应该会影响网格项。请尝试用看起来应该编译的代码回答+Keyur Thumar,我知道你想要表达的意思了。但我的要求很简单varies@cricket_007这是一个简单的想法。如果你是天才,你可以用你所说的来回答抱歉@Sagar Nayak。这对我没有任何帮助当然!!我会努力的!!我不能给你更多。我能问的是,如何在不申请回拨的情况下,在第一个用户回拨中获得第二个用户位置!!你的问题太令人困惑了,伙计。只需阅读oops基础知识。。你会得到关于课堂交流的答案。如果你不理解我的问题,请尽可能多地提问。不要试图低估他人。这是没有意义的。可能是你对你所说的内容很了解,所以试着表达。我让你给我一个如何做的线索。除了我的问题之外,你还编写了自己的代码。简言之,如果你在第一个适配器中单击第一个位置,它应该在第二个适配器的相同位置上起作用(执行一些操作)。因此我选择了Stackview和GridView。
    public class SecondAdapter extends RecyclerView.Adapter<SecondAdapter.ViewHolder>{
    
    /*
      all the boilerplate codes and business logic
     */
    
    public void reflectChanges(){
       /*
        This method will be called from the MainActivity. pass whatever params you want to pass from Activity and do the changes you want to do in the SecondAdapter.
        */
      }
    }