Rumah > Soal Jawab > teks badan
Semasa saya menulis kawalan.
Terdapat kaedah kelassubViewPager
继承了ViewPager
,我在另外一个地方需要用到这个ViewPager
的getCurrentItem()
, yang bermaksud untuk mendapatkan koordinat tertentu kawalan ini.
Tetapi kerana sayaViewPager
为了特殊效果,就让它的getCurrentItem()
返回的坐标有可能超出了我数据集合的长度size
,
Sebagai contoh, panjang set data saya ialah
saiz = 1024
size = 1024
而getCurrentItem()
返回的是40280
dangetCurrentItem()
mengembalikan40280
Jadi apabila saya aktif menghubunginya, saya berharap agar dia dapat mengembalikan kepada saya hasil koordinat ini %=size : 4028%1024
.
Juga getCurrentItem()
方法被系统调用时应该返回应该是40280
nombornya seperti ini.
Pendekatan asal saya ialah menulis kaedah khas untuk mendapatkan hasil %=size
ini. Paksa apabila anda perlu mendapatkan parameter ini.
Kemudian saya mengubahnya sedikit dan menggunakan new Exception().getStackTrace();
untuk mendapatkan maklumat tindanan panggilan untuk menentukan sama ada kaedah itu dipanggil oleh kelas yang ditentukan. Ini menghapuskan keperluan untuk memaksa dan menulis kaedah khusus subkelas.
Tetapi pendekatan ini akan menjana banyak memori sampah dan kerap menyebabkan GC
, jadi pertimbangkan untuk menggunakan kaedah pertama untuk menanganinya. GC
,所以考虑用回第一种方法来处理了。
但是强转总是有点让人不爽,感觉没有什么复用性。(虽然是代码烂的原因。。而且这样做这个subViewPager
Tetapi pemindahan paksa sentiasa agak tidak menyenangkan, dan rasanya seperti tiada kebolehgunaan semula. (Walaupun ia adalah kerana kod yang buruk... dan kebolehgunaan semula subViewPager
juga dikurangkan dengan melakukan ini) Jadi saya ingin bertanya sama ada terdapat cara untuk membuat kaedah yang sama dipanggil dalam cara yang berbeza Adakah terdapat cara untuk melaksanakan operasi yang berbeza dengan anggun?
大家讲道理2017-07-03 11:44:06
Adakah ia cukup untuk subViewPager untuk mengatasi getCurrentItem()? .
欧阳克2017-07-03 11:44:06
Saya telah melihat penyelesaian pelaksanaan perpustakaan yang serupa Jika logik perniagaan yang dikembalikan oleh panggilan dalaman dan luaran kaedah anda tidak konsisten, adalah disyorkan untuk menentukan kaedah tambahan...contohnya getCurrentRealItem()