我有这个班级
public class ClusterMapPresenter<T extends ClusterItem>{
private ClusterMapView<T> clusterMapView;
public ClusterMapPresenter(ClusterMapView<T> clusterMapView){
this.clusterMapView = clusterMapView;
}
public void createView() {
setItems(getMockItems());
}
private List<T> getMockItems() {
List<T> items = new ArrayList<>();
items.add( new SpeditionClusterItem(new Spedition(Constants.MOCK)));
return items;
}
public void setItems(List<T> clusterItems){
clusterMapView.setMarkers(clusterItems);
}
}
SpeditionClusterItem
实施ClusterItem
。
我只是通过将转换添加到T来实现它的工作
items.add((T)new SpeditionClusterItem(new Spedition(Constants.MOCK)));
但是,我不喜欢这种方法,有没有更好的方法来设计这个课程?
我将添加下一段代码:
public interface ClusterMapView<T extends ClusterItem> extends BaseView {
public void setMarkers(List<T> markers);
}
此界面在以下活动中实施:
public class Activity implements ClusterMapView<SpeditionClusterItem> {
private ClusterMapPresenter<SpeditionClusterItem> mClusterMapPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
mClusterMapPresenter = new ClusterMapPresenter<>(this);
...
}
@Override
public void setMarkers(List<SpeditionClusterItem> markers) {
mMapFragment.addItemsToMap(markers);
}
}
关键是,我希望活动在实现中显示带参数集的方法。
答案 0 :(得分:0)
好吧,我通过将列表检索与演示者分开,在构造函数中添加列表来解决它。
public ClusterMapPresenter(ClusterMapView<T> clusterMapView, List<T> clusterItems){
this.clusterMapView = clusterMapView;
this.clusterItems = clusterItems;
}
我不确定这是好设计,但它确实有效。欢迎任何关于如何改进它的建议。