5

Kısa bir süre önce uygulamanızı Activities ve TabHost'u kullanarak Fragments ve ViewPager'ı API v4 için Android Uyum Kütüphanesinden kullanmaya dönüştürdüm Çoğu sorunu düzeltebilir/çözebilirdim ancak alamıyorum setTextFilterEnabled yöntemini kullanarak ListViews metin filtreleme ile önceki davranış.ViewPager Fragmanının bir parçası olan FilterView ListView

Benim ViewPagerAdapter, her biri ListView olan Fragmanlar içerir. Kullanıcılar, ViewPager'dan geçerken, tıpkı TabHost-Activity modeliyle yapabildiğim gibi, kullanıcılar tarafından metin türüne filtre uygulamak için şu anda aktif Fragman ListView'ini istiyorum. Şu anda, ilk Fragment'ın ListView'sinin doğru bir şekilde yanıtlayacağı anlaşılıyor, ancak bir sonraki Fragmana kaydırıp ListView'ünü filtrelemeyi denediğimde, filtreleme yine de birincisi için geçerli olacaktır. İlk ikisini geçip süzdüğümde, sonuçlar deterministik değildir. Şu anda aktif olan Fragman filtreyi asla uygulayamayacaktır. Bazen komşu bir parça, bazen olmaz.

Bunu, hangi Parçanın şu anda görülebildiğini izleyen ve gizlenen özel geri aramalar ekleyerek düzeltmeye çalıştım. Bir fragman ViewPager'ın ana Fragmanı olarak görünür hale geldiğinde, ListView’de setTextFilterEnabled’u true’a ayarlıyorum ve diğerlerini false’a ayarlıyorum. Bu hiç yardımcı olmadı (doğru Fragmanlar için bayrağı doğru şekilde değiştirdiğimi doğruladım).

Bu gereksinimlerin ViewPager ile daha derin bir bütünleşme olduğundan şüpheleniyorum, ancak ne yapmam gerektiğini gerçekten anlayamıyorum. Bu işi nasıl yapabileceğime dair bir fikrin var mı? Gerekirse ACL koduyla uğraşmaktan mutluluk duyarım.

+0

Önceden yaptığınız işlemlerin ilgili snippet'lerini ve şimdi yaptığınız şeyi gönderebilirseniz yardımcı olacaktır. –

cevap

0

OnPageChangeListener'u genişleten onPageSelected yöntemini uygulayabilirsiniz. Belki de bunu zaten yapıyorsun. Buradan, bağdaştırıcıyı geçerli ListView'e ayarlayabilir veya durum buysa, cursorAdapter öğenizi isteyebilirsiniz. Kullanılan Bağdaştırıcının Filtrelenebilir arabirimini uygulaması gerektiğini unutmayın.