Heim > Fragen und Antworten > Hauptteil
Als ich eine Kontrolle schrieb.
Es gibt eine KlassesubViewPager
继承了ViewPager
,我在另外一个地方需要用到这个ViewPager
的getCurrentItem()
Methode, die bedeutet, eine bestimmte Koordinate dieser Steuerung zu erhalten.
Aber wegen mirViewPager
为了特殊效果,就让它的getCurrentItem()
返回的坐标有可能超出了我数据集合的长度size
,
Zum Beispiel beträgt die Länge meines Datensatzes
size = 1024
size = 1024
而getCurrentItem()
返回的是40280
undgetCurrentItem()
gibt40280
zurück
Wenn ich ihn also aktiv anrufe, hoffe ich, dass er mir das Ergebnis dieser Koordinierung zurückgeben kann %=size : 4028%1024
.
Auch seine getCurrentItem()
方法被系统调用时应该返回应该是40280
Nummern sind so.
Mein ursprünglicher Ansatz bestand darin, eine spezielle Methode zu schreiben, um dieses %=size
Ergebnis zu erhalten. Erzwingen Sie es, wenn Sie diesen Parameter benötigen.
Später habe ich es ein wenig geändert und new Exception().getStackTrace();
verwendet, um die Aufrufstapelinformationen abzurufen, um festzustellen, ob die Methode von der angegebenen Klasse aufgerufen wurde. Dadurch entfällt die Notwendigkeit, eine unterklassenspezifische Methode zu erzwingen und zu schreiben.
Aber dieser Ansatz erzeugt viel Speichermüll und verursacht häufig GC
, also erwägen Sie die Verwendung der ersten Methode, um damit umzugehen. GC
,所以考虑用回第一种方法来处理了。
但是强转总是有点让人不爽,感觉没有什么复用性。(虽然是代码烂的原因。。而且这样做这个subViewPager
Aber eine erzwungene Übertragung ist immer etwas unangenehm und es fühlt sich an, als gäbe es keine Wiederverwendbarkeit. (Obwohl es am fehlerhaften Code liegt ... und die Wiederverwendbarkeit von subViewPager
dadurch ebenfalls verringert wird) Daher wollte ich fragen, ob es eine Möglichkeit gibt, dieselbe Methode anders aufzurufen Gibt es eine Möglichkeit, verschiedene Operationen ordnungsgemäß auszuführen?
欧阳克2017-07-03 11:44:06
看过类似的库的实现方案,如果你的这个方法内部和外部调用的返回的业务逻辑就不统一的话,建议还是额外定义一个方法比较好……比如 getCurrentRealItem()