我目前正在使用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
)
这可能是什么问题以及解决问题的最佳方法是什么?
答案 0 :(得分:1)
错误消息表明您错过了班级中的特定构造函数,您应该实现:
protected ListView (IntPtr javaReference, Android.Runtime.JniHandleOwnership transfer)