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