我有一个自定义视图,我想从资源模板创建。我的自定义视图构造函数接受设置为自定义视图附加信息的附加参数。
问题是,当我对视图充气时,我得到的视图对象不是来自自定义视图的子类,因为充气方法是静态的,返回的是一个通用的新视图,而不是自定义视图的实例。
我正在寻找的是一种通过传递自定义视图对象引用来膨胀视图的方法。
公共类mlbrookoverlayview扩展视图{
miscinfo mmiscinfo;
public mlbrookoverlayview(上下文上下文,miscinfo miscinfo){
超级(上下文);
mmissinfo=miscinfo;
}
创建公共视图(final int resource,final overlayitem item item,
mapview mapview,final int markerid){
viewGroup viewGroup=null;
view balloon=view.flatte(getContext(),资源,视图组);
//我想返回这个对象,以便以后可以使用它的mmissinfo
//返回;
返回气球;
}
}

最佳答案

在查看https://github.com/galex/android-mapviewballoons处的代码之后
我可以相应地更新我的代码。想法是从资源中创建一个布局,然后将膨胀视图添加到扩展布局的类的实例中(如marcos上面建议的那样)。

public class MLBalloonOverlayView extends FrameLayout {

    public MLBalloonOverlayView(Context context, final OverlayItem overlayItem) {
        super(context);
        mOverlayItem = overlayItem;
    }

    public void create(final int resource, MapView mapView, final int markerID) {
        // inflate resource into this object
        TableLayout layout = new TableLayout(getContext());
        LayoutInflater.from(getContext()).inflate(resource, layout);
        TableLayout.LayoutParams params = new TableLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        params.gravity = Gravity.NO_GRAVITY;
        this.addView(layout, params);
    }
}

08-16 14:46