Convert Android Java code to Xamarin C# -
i problem converting code native android java code xamarin c# android code
i have class shall me delay start in custom autocomletetextview
searching:
public class delayautocompletetextview : autocompletetextview { public static context _context {get; set;} private static android.util.iattributeset _attrs { get; set; } public delayautocompletetextview(context context, android.util.iattributeset attrs) : base(context, attrs) { _context = context; _attrs = attrs; } private static int message_text_changed = 100; private static int default_autocomplete_delay = 750; private int mautocompletedelay = default_autocomplete_delay; private progressbar mloadingindicator; public class mhandler : handler { public override void handlemessage(message msg) { delayautocompletetextview.base.performfiltering((java.lang.icharsequence)msg.obj, msg.arg1); } } public void setloadingindicator(progressbar progressbar) { mloadingindicator = progressbar; } public void setautocompletedelay(int autocompletedelay) { mautocompletedelay = autocompletedelay; } protected override void performfiltering(java.lang.icharsequence text, int keycode) { if (mloadingindicator != null) { mloadingindicator.visibility = viewstates.visible; } mhandler.removemessages(message_text_changed); mhandler.sendmessagedelayed(mhandler.obtainmessage(message_text_changed, text), mautocompletedelay); } public override void onfiltercomplete(int count) { if (mloadingindicator != null) { mloadingindicator.visibility = viewstates.gone; } base.onfiltercomplete(count); }}
but have 3 error messages:
1)
delayautocompletetextview.base.performfiltering((java.lang.icharsequence)msg.obj, msg.arg1);
2)
mhandler.removemessages(message_text_changed);
3)
mhandler.sendmessagedelayed(mhandler.obtainmessage(message_text_changed, text), mautocompletedelay);
original code on java copied github
please me convert. sorry bad english )
the first error happens because unlike java, nested classes in c# not able access parent class's this
pointer separate entity.
instead of making mhandler
class, suggest make variable , use handler(action<message>)
constructor create handler
can access members of delayautocompletetextview
.
private readonly handler mhandler = new handler(delegate (message msg) { base.performfiltering((java.lang.icharsequence)msg.obj, msg.arg1); });
the second , third errors simple spelling mistakes.
the xamarin equivalents of removemessages
, sendmessagedelayed
, obtainmessage
removemessages
, sendmessagedelayed
, obtainmessage
, following pascalcase
method naming convention outlined microsoft c# coding style guide. all xamarin base class libraries , generated bindings java libraries follow convention.
i suggest change name of fields msomefield
somefield
following ms c# coding style guide.
Comments
Post a Comment