覆盖Monodroid中的ListView属性

时间:2012-10-01 09:55:29

标签: android listview xamarin.android extend

我目前正在使用Monodroid进行编程,而我对Listview的扩展存在问题。

我目前的ListView扩展如下:

public class TTListView : ListView
{
    private Context mContext;
    private bool wrapAdapter;

    public TTListView(Context context) :
        base(context)
    {
        Initialize();
        this.mContext = context;
    }

    public TTListView(Context context, IAttributeSet attrs) :
        base(context, attrs)
    {
        Initialize();
        this.mContext = context;
    }

    public TTListView(Context context, IAttributeSet attrs, int defStyle) :
        base(context, attrs, defStyle)
    {
        Initialize();
        this.mContext = context;
    }

    private void Initialize()
    {
        this.CacheColorHint = Color.Transparent;
        //Still some more stuff to be added here
    }

    public void InsertItemAt(int index)
    {
        Animation anim = AnimationUtils.LoadAnimation(
                 mContext, Resource.Animator.slide_top_down);
        anim.Duration = 500;
        this.GetChildAt(index).StartAnimation(anim);
    }

    public void SetDelegate(TTListDelegate _delegate)
    {
        this.OnItemClickListener = (IOnItemClickListener)_delegate;
        this.OnItemLongClickListener = (IOnItemLongClickListener)_delegate;
    }

    public override void AddFooterView(View v)
    {
        base.AddFooterView(v);
        wrapAdapter = true;
    }

    /*public override IListAdapter Adapter
    {
        get
        {
            return base.Adapter;
        }
        set
        {
            //Check if the passed parameter is a TTListAdapter
            TTListAdapter _ttadapter = value as TTListAdapter;
            if (_ttadapter != null)
            {
                _ttadapter.Wrapped = wrapAdapter;
            }
            base.Adapter = value;
        }
    }*/
}

以上代码完美无缺。 这个问题是当我试图覆盖Adapter属性(现在已注释掉)时,我在尝试创建TTListView对象时遇到以下异常:

"Unable to activate instance of type TimeTellApp.TTListView from native handle 40557188. No constructor found for TTListView::.ctor(System.IntPtr, Android.Runtime.JniHandleOwner)"

通常这与GC破坏托管映射对象有关,所以直到现在我通过保持对对象的引用来解决这些问题。 TTListView的问题是在调用构造函数进行初始化时已经出现异常。

我创建了一个TTListView对象:

TTListView setting_listview = new TTListView(this);

(这是Activity) 这可能是什么问题以及解决问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

错误消息表明您错过了班级中的特定构造函数,您应该实现:

protected ListView (IntPtr javaReference, Android.Runtime.JniHandleOwnership transfer)