我有一个类在我的monodroid应用程序中覆盖ArrayAdapter。它用于为文本视图创建自动完成。它的代码是:
class PlacesAutoCompleteAdapter: ArrayAdapter <String> ,IFilterable
{
private List<String> resultList;
public PlacesAutoCompleteAdapter(Context context, int textViewResourceId):
base(context,textViewResourceId)
{
}
public override int Count
{
get
{
return base.Count;
}
}
public override String GetItem (int position)
{
return resultList[position];
}
}
但它会出现此错误:
cannot override inherited member 'Android.Widget.ArrayAdapter<string>.GetItem(int)' because it is not marked virtual, abstract, or override (CS0506)
我很困惑。这个错误是什么?当然,GetItem方法在基类中是虚拟的,我使用了覆盖词。这是什么错误?
答案 0 :(得分:5)
如果扩展ArrayAdapter而不是ArrayAdapter&lt; String&gt;,您将能够覆盖它。并将此签名用于GetItem:
public override Java.Lang.Object GetItem(int position)
答案 1 :(得分:2)
我不确定问题是什么,但我总是继承自 BaseAdapter 并将项目列表作为参数传递给构造函数
这是我如何做的一个例子
public class ImageAdapter : BaseAdapter
{
private readonly List<string> _imagesUrls;
private readonly BaseActivity _activity;
public ImageAdapter(BaseActivity activity, List<string> imagesUrls)
{
_activity = activity;
_imagesUrls = imagesUrls;
}
public override Object GetItem(int position)
{
return null;
}
public override long GetItemId(int position)
{
return 0;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
ImageView imageView;
if (convertView == null)
{
imageView = new ImageView(_context);
imageView.LayoutParameters = new GridView.LayoutParams(Misc.ImageThumbWidth, Misc.ImageThumbWidth);
imageView.SetScaleType(ImageView.ScaleType.CenterCrop);
imageView.SetPadding(0, 0, 0, 0);
}
else
{
imageView = (ImageView)convertView;
}
_activity.DisplayImage(_imagesUrls[position], imageView);
return imageView;
}
public override int Count
{
get { return _imagesUrls.Count; }
}
}
请注意,此方法
public override Object GetItem(int position)
{
return null;
}
对象实际上是 Java.Lang.Object
答案 2 :(得分:0)
ArrayAdapter是一个公共类实现BaseAdapter,它是一个接口。 ArrayAdapter已经实现GetItem(int position)
方法an abstract method in BaseAdapter,这是Adapter的继承方法,所以你不需要再次实现它,当然也不允许重写。
答案 3 :(得分:-1)
place(&#34; @ override&#34;)覆盖方法getitem(int)上面的注释