android中两个适配器之间的通信?
我在单个activity StackView和Gridview中有两个视图以及两个相应的适配器。当我单击StackView项时,它应该在Gridview中翻转网格项,反之亦然?//activity classsandroid中两个适配器之间的通信?,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
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");
}
}
}
根据你的问题,这是我得到的-
您有一个具有两个独立视图的活动,它们有自己的适配器。因此,当其中一个适配器发生更改时,您希望它反映到另一个适配器中
查询的简单解决方案是-
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.
*/
}
}