【发布时间】:2020-06-29 08:08:44
【问题描述】:
我在 android 应用程序中工作,设计了一个通用适配器,参数化适配器将继承它。
public abstract class CarAdapter<T> extends RecyclerView.Adapter<CarAdapter<T>.BaseCarViewHolder> {
protected DialogMakerCar<T> dialogMaker;
protected Context context;
......
子类
public class CarItemAdapter extends CarDialogAdapter<Item> {
public CarItemAdapter(Context context, DialogMakerCar<Item> dialogMaker) {
super(dialogMaker, context);
}
我在片段中调用此适配器,并且该片段也需要是通用的,以便我可以为来自活动的自定义对象调用此片段和适配器。
//Fragment to call adapter but its not letting me to use <T> generic
adapter = new CarItemAdapter(getContext(),dialogMaker);
gridRecycler.setHasFixedSize(true);
gridRecycler.setLayoutManager(adapter.getLayoutManager());
如果您需要更多详细信息,请告诉我,谢谢
【问题讨论】:
-
当您在 CarItemAdapter 中定义 T 是 Item 时,您实际上是在使用 T。您可以更改 CarDialogAdapter
的 CardItemAdapter 并在此时定义 T,如果那是您正在寻找的。span> -
@MissingSemiColon 请让我知道你到底在说什么,基本上,我希望适配器具有我将在活动中初始化的通用对象列表,但我不会从活动而不是从片段,该片段类是从 Activity 调用的,因此我可以使用 Activity 类中的确切类型进行初始化,但片段不知道它不让我对适配器调用使用泛型。活动 --> 片段 --> 适配器
-
问题是 CarItemAdapter 不是通用的,您正在定义它使用 Item。您可以在 CarItemAdapter 中定义一个泛型,或者如果您想要完成的是片段根据 Activity 的需要创建一个适配器,则您必须定义一个接口。我不完全理解你真正想要什么,但我猜你正在尝试创建某种工厂,片段应该返回正确的适配器,而活动不应该关心真正的适配器是什么。这是通过使用接口来完成的。阅读 List
接口,它是一个接口并使用泛型。 -
是的@MissingSemiColon 你正确理解我想要什么,我只是想了解更多关于你建议的方法。
标签: java android android-fragments generics