Liste görünümümdeki bir satırın (FrameLayout içinde bulunan) ne zaman kaydırıldığını algılayabilmem için bazı hareket algılama kodları uygulayabildim.Liste görünümünde satırın konum (konum) nasıl alınacağı
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
int itemId = MainActivity.this.getListView().pointToPosition((int) e1.getX(),(int) e1.getY());
Offer order = (Offer)MainActivity.this.getListView().getAdapter().getItem(itemId);
View v = MainActivity.this.getListView().getChildAt(itemId);
}
}
Ben o satırın bağlam duyarlı seçenekler kümesi ile almayanlar sıranın üstünden bir görünümünü görüntülemek istiyorum.
v.getTop()
v.getBottom()
dönüş doğru değerler görünümü kaydırıldığını önce sadece:
Sorunlarım aşağıdaki yöntemler olmasıdır. Muhtemelen kaydırma pozisyonlarını kullanarak ofsetleri hesaplamak için bazı hesaplamalar yapabilirdim ama aynı zamanda, ekranda görünecek bir satırı kaydırdığımda sadece değerleri aldığımı fark ettim. Listeyi aşağı kaydırır ve ardından bir satırı (orijinal olarak ekran dışı olmayan) kaydırırsam, bu yöntemler boş değerleri döndürür.
Aşağıdaki yöntemler aynı sorundan muzdarip görünüyor...
v.getLocationOnScreen(loc)
v.getLocationInWindow(loc)
Sonuçta, ben görünür liste görünümü üst ve almayanlar edilmiştir sıranın arasındaki mesafeyi bulmak için arıyorum. Daha sonra ana FrameLayout'a uygun yükseklik yastığına bir görünüm eklemek için bu mesafeyi kullanacağım (böylece kaydırılan satırı kaplayacak şekilde).
Herhangi bir yardım çok takdir!
Cevabınız için teşekkür ederiz. Aslında, görünüm nesnelerini izlemiyorum. Çalışma zamanında, hızlıca kaydırıldığında satırdan bekletiyorum. Ardından, ekrandaki çağrıları denemek ve bulmak için yukarıdaki çağrıları yapıyorum. Satırı değiştirmiyorum sadece sıranın üst kısmındaki bir görünümü görüntülemek istiyorum. Daha sonra liste tekrar kaydırılır çekilmez yeni görünümü kaldıran bir kaydırma dinleyicim var. Özelliğin bir gösterimi, iPhone için tweetie 2'nin bu tanıtımında görülebilir: http://www.youtube.com/watch?v=Vxjj3F5MCpQ#t=1m12s – Damian
Dinamik olarak bekletme şeklinizi ayrıntılı olarak açıklayabilir misiniz? Çalışma zamanı satırında, ne zaman kaydırılır? –
ListView'de GestureDetector ve GestureListener'ı kullanma. Yukarıdaki kod snippet'ini, bir kullanıcı listesindeki parmaklarını kaydırdığında çağrılan onFling yöntemini (ve params) içerecek şekilde güncelledim. Bazı basit matematikler kullanıcının soldan sağa doğru kaydırdığını kontrol etmek için kullanılır, daha sonra tokatın hangi sıranın karşılık geldiğini bulmak için pointToPosition kullanılır. – Damian