CardView
'un içinde bulunan bir RecyclerView
var. CardView
, 500dp'lik bir yüksekliğe sahiptir, ancak RecyclerView
daha küçükse bu yüksekliği kısaltmak istiyorum. RecyclerView
, öğelerini ilk kez bırakmayı tamamladığında çağrılan herhangi bir dinleyici olup olmadığını merak ederek, 'yüksekliğini (500dp'den küçükse) CardView
uzunluğuna ayarlamak mümkündür.RecyclerView öğelerin bırakılmasını tamamladığında nasıl bilinir?
cevap
Ben de rehabilitasyon makinesi görünümü tüm elemanları şişirmek bittikten sonra kod çalıştırmak için gerekli. Adaptörümde onBindViewHolder
numaralı telefonu kontrol etmeyi denedim, eğer konum sonuncuyduysa ve ardından gözlemciye bildirildi. Fakat bu noktada, geri dönüşümcü görünümü hala tam olarak doldurulmadı. RecyclerView, ViewGroup
gereğince this anwser çok yardımcı oldu. Sadece recyclerView bir OnGlobalLayoutListener eklemek gerekir: benim için çalıştı Ne
View recyclerView=findViewById(R.id.myView);
recyclerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//At this point the layout is complete and the
//dimensions of recyclerView and any child views are known.
}
});
RecyclerView adaptörü ayarladıktan sonra dinleyici eklemek oldu.
ServerRequest serverRequest = new ServerRequest(this);
serverRequest.fetchAnswersInBackground(question_id, new AnswersDataCallBack()
{
@Override
public void done(ArrayList<AnswerObject> returnedListOfAnswers)
{
mAdapter = new ForumAnswerRecyclerViewAdapter(returnedListOfAnswers, ForumAnswerActivity.this);
recyclerView.setAdapter(mAdapter);
recyclerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
progressDialog.dismiss();
}
});
}
});
Bu
küresel düzen devlet veya görünüm ağaç değişiklikleri içindeki görünümlerin görünürlüğü sonra "progressDialog" reddeder. @andrino anwser aitÇalışma modifikasyon.
@Juancho yukarıdaki yorumunda belirttiği gibi. Bu yöntem birkaç kez denir. Bu durumda sadece bir kez tetiklenmesini istiyoruz. örnek ile örn
düzenlendi özel dinleyici
private RecyclerViewReadyCallback recyclerViewReadyCallback;
public interface RecyclerViewReadyCallback {
void onLayoutReady();
}
O halde tek ben
recyclerViewReadyCallback = new RecyclerViewReadyCallback() {
@Override
public void onLayoutReady() {
//
//here comes your code that will be executed after all items has are laid down
//
}
};
sizin koduyla özel dinleyici uygulamak gerek bundan sonra senin RecyclerView
recyclerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (recyclerViewReadyCallback != null) {
recyclerViewReadyCallback.onLayoutReady();
}
recyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
üzerinde OnGlobalLayoutListener
setkaldırmaya çalışırken ile mücadelebir kez tetiklendiğinde, bu bir IllegalStateException
atar. ne gerek zaten çocuk sahibi olmadığını kontrol etmek ne yaptım ikinci elemana benim recyclerView kaydırmak için olduğunu ve bu doğrudur ilk kez ise, ancak o zaman ben kaydırma yapmak beri:
public class MyActivity extends BaseActivity implements BalanceView {
...
private boolean firstTime = true;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
ViewTreeObserver vto = myRecyclerView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (myRecyclerView.getChildCount() > 0 && MyActivity.this.firstTime){
MyActivity.this.firstTime = false;
scrollToSecondPosition();
}
}
});
}
...
private void scrollToSecondPosition() {
// do the scroll
}
}
HTH birisi!
(Elbette, bu @andrino ve @Phatee yanıtlara ilham)- 1. Edittext'in boş bırakılmasını önleme
- 2. RecyclerView
- 3. Senkronizasyon bittiğinde nasıl bilinir?
- 4. Cmder PATH nasıl bilinir?
- 5. jquery, div nasıl bilinir?
- 6. Hashmap nasıl bilinir/alınır?
- 7. RecyclerView kaydırma nasıl yeniden başlatılır
- 8. RecyclerView öğelerinin ViewHolder'ı nasıl edinilir
- 9. RecyclerView
- 10. Bindirme Simge durumu nasıl bilinir?
- 11. Tüm RecyclerView ViewHolder nasıl edinilir?
- 12. RecyclerView
- 13. Recyclerview
- 14. Belirli derlemelerin Kod Kapsamı dışında bırakılmasını nasıl önleyebilirim?
- 15. Tespit Etme Geri Dönüşüm öğeleri öğelerin dışında
- 16. Öğelerin ikisi arasındaki öğelerin karşılaştırılması Öğeleri
- 17. Recyclerview, tetikleyiciler
- 18. RecyclerView öğesi
- 19. Odak değişikliklerini tamamladığında, EditText öğesinin tam olarak ayarlanması
- 20. JAXB uygulamasının ne için kullanıldığı nasıl bilinir?
- 21. Dosya C içinde bittiğinde yayın nasıl bilinir?
- 22. Belgesiz bir SignalR sunucusu nasıl "bilinir"?
- 23. Bir jQuery nesnesinin türü nasıl bilinir?
- 24. Çalışma kitabındaki sayfa sayısı nasıl bilinir?
- 25. Akıştan önce ses şarkısının süresi nasıl bilinir?
- 26. Golang - Tamponlanmış bir kanal nasıl bilinir
- 27. Docker kabının neden çıkma sebebi nasıl bilinir?
- 28. Bilgisayarın toplam RAM miktarı nasıl bilinir?
- 29. Android Geofence'ın süresi dolduğunda nasıl bilinir?
- 30. Bir işlemin ne zaman çıktığı nasıl bilinir?
şey buldunuz? Buna gerçekten ihtiyacım var. – Magnas
İlgili: http://stackoverflow.com/questions/32496681/how-to-know-when-data-is-loaded-inside-custom-recyclerview –