public boolean getFavourite(Winkel winkel){
boolean isFavourite = false;
MyDBHandler dbHandler = new MyDBHandler(context,null,null,1);
User user = dbHandler.loggedIn(); //This method isn't usable anymore
isFavourite = dbHandler.isFavourite(user,winkel);
return isFavourite;
}
我想将此代码更改为:
public boolean getFavourite(Winkel winkel){
boolean isFavourite = false;
MyDBHandler dbHandler = new MyDBHandler(context,null,null,1);
isFavourite = dbHandler.isFavourite(user,winkel);
return isFavourite;
}
我正在使用我的数据库来跟踪最初登录的用户,但只需将第一个活动的数据发送到第二个活动就可以轻松更改。
@Override
public void login(User user){
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("Username",user.getUserName());
startActivity(intent);
}
然后,在我的第二个活动中,我可以使用以下方法调用所有数据库函数:
user.setUserName(intent.getStringExtra("Username"));
(因为我需要用户名作为我数据库的密钥。
但是,我的活动有三个片段,其中两个使用我的适配器进行recyclerview。这些片段实现了我的适配器类中提供的接口,就是这个接口(只是显示它是完整的,接口是无关紧要的,事实是我的片段必须实现这个接口)。
public interface ItemCLickCallback {
void onItemClick(int p);
void onSecItemClick(int p);
}
现在,我需要适配器类中的用户名。它必须来自我的活动(因为它存储的地方),我不能使用接口,因为我已经使用了一个接口,我必须覆盖每个碎片中的方法。
我可以使用Bundle将我的活动中的数据传递给所有片段,然后在我的片段中创建它时将其传递给适配器。但这似乎是很多过多的代码。有更简单的方法吗?谢谢
编辑:
在Adapter类中:
private CheckFavourite checkFavourite;
public void setCheckFavourite(final CheckFavourite checkFavourite){
this.checkFavourite = checkFavourite;
}
boolean isFavourite = checkFavourite.getFavourite(winkel);
public interface CheckFavourite{
boolean getFavourite(Winkel winkel);
}
片段:
public class Overview extends Fragment implements Adaptor.ItemCLickCallback
的活动:
public class SecondActivity extends AppCompatActivity implements Adaptor.CheckFavourite
Activity必须实现seconde接口,fragment实现第二个。但是它们都在同一个适配器实例上。
我需要做什么(基本上是我的活动):
adaptor.setCheckFavourite(this);
但我不能,因为我没有适配器,它是在我的片段中创建的。
我试过了:
adaptor.setCheckFavourite(this.getActivity());
在我的片段中,但这给了我一个错误:
Error:(60, 51) error: incompatible types: FragmentActivity cannot be converted to CheckFavourite.
然而
adaptor.setItemCLickCallback(this);
在我的片段(另一个界面)中工作得很好。我该如何解决这个问题?
答案 0 :(得分:2)
:)您可以使用多重继承。为了能够使类实现多个接口,我们需要这样的东西:
public class MyClass extends MyOtherClass implements MyInterface1, MyInterface2, ... , MyInterfaceN {
// Need to implement all interface methods here
}