컨트롤을 작성할 때.
이 컨트롤의 특정 좌표를 얻는 것을 의미하는 클래스subViewPager
继承了ViewPager
,我在另外一个地方需要用到这个ViewPager
的getCurrentItem()
메서드가 있습니다.
근데 나 때문에ViewPager
为了特殊效果,就让它的getCurrentItem()
返回的坐标有可能超出了我数据集合的长度size
,
을 반환합니다.예를 들어, 내 데이터 세트의 길이는
size = 1024
size = 1024
而getCurrentItem()
返回的是40280
이고getCurrentItem()
은40280
그래서 내가 적극적으로 그 사람에게 전화를 하면, 그 사람이 이 좌표%=size : 4028%1024
의 결과를 나에게 돌려줄 수 있기를 바랍니다.
그의 getCurrentItem()
方法被系统调用时应该返回应该是40280
숫자도 이렇습니다.
원래 접근 방식은 이 %=size
결과를 얻기 위한 특별한 방법을 작성하는 것이었습니다. 이 매개변수를 가져와야 할 때 강제로 실행하세요.
나중에 이를 약간 변경하고 new Exception().getStackTrace();
를 사용하여 지정된 클래스에 의해 메서드가 호출되었는지 확인하기 위한 호출 스택 정보를 얻었습니다. 이렇게 하면 하위 클래스별 메서드를 강제로 작성하고 작성할 필요가 없습니다.
그러나 이 접근 방식은 많은 가비지 메모리를 생성하고 GC
를 자주 발생시키므로 첫 번째 방법을 사용하여 처리하는 것이 좋습니다. GC
,所以考虑用回第一种方法来处理了。
但是强转总是有点让人不爽,感觉没有什么复用性。(虽然是代码烂的原因。。而且这样做这个subViewPager
하지만 강제 전송은 항상 좀 불편하고 재사용성이 없는 것 같은 느낌이 듭니다. (비록 코드가 좋지 않기 때문이지만... 이렇게 하면 subViewPager
의 재사용성도 떨어집니다.) 그래서 동일한 메서드를 다른 메서드에서 호출할 수 있는 방법이 있는지 묻고 싶었습니다. 다양한 작업을 정상적으로 수행할 수 있는 방법이 있나요?
subViewPager가 getCurrentItem()을 재정의하는 것만으로는 충분하지 않나요? .
유사한 라이브러리의 구현 솔루션을 본 적이 있습니다. 메서드의 내부 및 외부 호출에서 반환된 비즈니스 로직이 일관되지 않으면 추가 메서드를 정의하는 것이 좋습니다...예를 들어
getCurrentRealItem()