Maison > Questions et réponses > le corps du texte
Quand j'écrivais un contrôle.
Il existe une méthode de classesubViewPager
继承了ViewPager
,我在另外一个地方需要用到这个ViewPager
的getCurrentItem()
, qui consiste à obtenir une certaine coordonnée de ce contrôle.
Mais à cause de moiViewPager
为了特殊效果,就让它的getCurrentItem()
返回的坐标有可能超出了我数据集合的长度size
,
Par exemple, la longueur de mon ensemble de données est
size = 1024
size = 1024
而getCurrentItem()
返回的是40280
etgetCurrentItem()
renvoie40280
Alors quand je l'appelle activement, j'espère qu'il pourra me rendre le résultat de cette coordonnée %=size : 4028%1024
.
Aussi ses getCurrentItem()
方法被系统调用时应该返回应该是40280
numéros comme celui-ci.
Mon approche originale était d'écrire une méthode spéciale pour obtenir ce %=size
résultat. Forcez-le lorsque vous avez besoin d'obtenir ce paramètre.
Plus tard, je l'ai un peu modifié et utilisé new Exception().getStackTrace();
pour obtenir les informations sur la pile d'appels afin de déterminer si la méthode a été appelée par la classe spécifiée. Cela élimine le besoin de forcer et d’écrire une méthode spécifique à une sous-classe.
Mais cette approche générera beaucoup de mémoire inutile et provoquera fréquemment du GC
, alors pensez à utiliser la première méthode pour y remédier. GC
,所以考虑用回第一种方法来处理了。
但是强转总是有点让人不爽,感觉没有什么复用性。(虽然是代码烂的原因。。而且这样做这个subViewPager
Mais le transfert forcé est toujours un peu désagréable, et on a l'impression qu'il n'y a pas de réutilisation. (Bien que ce soit à cause du mauvais code... et que la réutilisabilité de subViewPager
soit également réduite en faisant cela) Je voulais donc demander s'il existe un moyen d'appeler la même méthode dans différents classes. Existe-t-il un moyen d’effectuer différentes opérations avec élégance ?
大家讲道理2017-07-03 11:44:06
N'est-il pas suffisant que subViewPager remplace getCurrentItem() ? .
欧阳克2017-07-03 11:44:06
J'ai vu des solutions d'implémentation de bibliothèques similaires. Si la logique métier renvoyée par les appels internes et externes de votre méthode n'est pas cohérente, il est recommandé de définir une méthode supplémentaire... par exemple getCurrentRealItem()