Tôi đang cố gắng làm điều gì đó sau khi cuộn dừng. Do đó, tôi đã thử sử dụng OnScrollListener#onScrollStateChanged(SCROLL_STATE_IDLE)
để phát hiện khi cuộn đã dừng (hoặc TOUCH_SCROLL or FLING
) (ở mức 1.5 nó chạy như tôi mong đợi). Nhưng khi nó chạy trên 2.0, onScrollStateChanged không thể nhận được sự kiện sau khi phát hành finger.Is có bất kỳ callback hoặc anyway để phát hiện sự kiện đó?làm thế nào để phát hiện Android ListView Scrolling dừng lại?
Trả lời
Hãy thử sử dụng setOnScrollListener và thực hiện các onScrollStateChanged với scrollState == 0 ... làm những gì bạn cần làm ...
setOnScrollListener(new OnScrollListener() {
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
Log.i("a", "scrolling stopped...");
}
}
});
thay vì hardcode bằng 0, sử dụng OnScrollListener.SCROLL_STATE_IDLE Điều này sẽ hoạt động nếu bạn đang cố gắng phát hiện khi cuộn dừng lại ... nếu bạn đang cố gắng để phát hiện khi ngón tay/fling không chạm vào màn hình nữa, đó sẽ là một cách tiếp cận khác .. –
Tôi vừa kiểm tra mã trên với 2.0 và nó hoạt động tốt ... –
Bí quyết là để theo dõi khi người dùng được flinging và khi họ không phải. Có vẻ như đây là sự khác biệt duy nhất bạn có thể thực hiện bởi vì, như bạn đã nói, quá trình chuyển từ cuộn bằng ngón tay sang chế độ chờ không được ghi là không phải là. Đây là những gì tôi đang nói về:
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState != OnScrollListener.SCROLL_STATE_FLING) {
flinging = false;
int count = view.getChildCount();
for (int i = 0; i < count; i++) {
View convertView = view.getChildAt(i);
Recipe recipe = (Recipe) convertView.getTag();
ImageView image = (ImageView) convertView.findViewById(R.id.icon);
if (recipe != null && recipe.getImageURL() != null) {
ImageLoader.loadImage(this, image, recipe.getImageURL());
}
}
} else {
flinging = true;
}
}
Và sau đó trong bộ chuyển đổi ListView:
public View getView(int position, View convertView, ViewGroup parent) {
// Bunch of code....
if (!flinging) {
ImageLoader.loadImage(BrowseRecipes.this, image, recipe.getImageURL());
}
}
Vì vậy, thay vì phản ứng với sự thay đổi trong người nghe, chỉ cần tải các hình ảnh (hoặc bất cứ điều gì bạn cần để làm điều đó một cách chuyên sâu) ngay từ đầu miễn là không có sự xáo trộn nào xảy ra.
Đây là tất cả được đưa ra khỏi dự án của tôi tại đây: https://github.com/pkulak/mealfire_android
- 1. Làm thế nào để phát hiện xem một listview đang cuộn lên hoặc xuống trong android?
- 2. Android: Làm thế nào để dừng Runnable?
- 3. Làm thế nào để xử lý ListView bấm trong Android
- 4. Làm thế nào để tải Listview "trơn tru" trong android
- 5. Làm thế nào để thay đổi nền của UIWebView Scrolling?
- 6. Làm thế nào để có được một TextView trong Android có Horizontal Scrolling và autoscrolled?
- 7. Làm thế nào để dừng lặp lại các dịch vụ báo động trong Android?
- 8. Làm thế nào để ẩn ListView ColumnHeader?
- 9. Dừng ViewPagers bên trong ListView từ đặt lại
- 10. Java side scrolling trò chơi trên android
- 11. Phát hiện swipe cho mỗi hàng listview
- 12. Làm thế nào để phát hiện khả năng Tai nghe
- 13. Lặp lại các mục ListView trong Android
- 14. Làm thế nào để dừng dịch vụ?
- 15. UISearchBar phát hiện khi loại người dùng dừng lại và không tìm kiếm ngay lập tức để phát hiện tạm dừng
- 16. Làm thế nào để phát hiện iPhone/Android thức từ giấc ngủ với javascript
- 17. Listview: Làm thế nào để duy trì đánh dấu/chọn sau khi nhấn nút quay lại?
- 18. Làm cách nào để phát hiện xem ứng dụng android có bị dừng hoặc gỡ cài đặt không?
- 19. Làm thế nào để lặp lại một âm thanh mà không cần tạm dừng bởi trình phát nhạc nền?
- 20. Cách phát hiện khi mousemove đã dừng
- 21. Làm thế nào để phát hiện deadlocks trong Mysql/innodb?
- 22. thực hiện AutoComplete với ListView trong Android
- 23. Làm cách nào để dừng Android ViewFlipper khỏi vòng lặp?
- 24. Không thể phát hiện hoàn thành TTS (gọi lại) android.
- 25. Làm thế nào để phát hiện xem có trở lại từ hoạt động của trẻ không?
- 26. Làm thế nào để làm cho hàng đầy đủ có thể nhấp vào trong listview android
- 27. Làm thế nào để phát hiện tốc độ CPU của Android?
- 28. Làm thế nào để phát hiện đầu vào cảm ứng trên Android
- 29. Làm thế nào để dừng Handler Runnable?
- 30. Làm thế nào để dừng Swing EDT
Câu trả lời dưới đây có thể chấp nhận được cho bạn không? Nếu vậy, hãy chấp nhận, nếu không tôi sẽ mong chờ một số phản hồi về câu trả lời ;-) –