2013-05-04 23 views
6

Tôi có GridView và tôi cần phải làm hai việc:Android GridView OnScrollListener ScrollUp và ScrollDown kiện

Khi tôi di chuyển xuống, tôi muốn tìm vị trí có thể nhìn thấy qua ví dụ int index = GridView.getLastVisiblePosition();

Khi tôi di chuyển lên, tôi muốn tìm vị trí hiển thị đầu tiên, ví dụ: int index = GridView.getFirstVisiblePosition();

Tôi biết tôi có thể sử dụng mã sau, nhưng tôi không biết cách viết mã cho ScrollUp và ScrollDown ở đâu. Làm ơn giúp tôi. Tôi mới sử dụng Android.

private OnScrollListener onAnswersScrolled = new OnScrollListener() { 

    @Override 
    public void onScrollStateChanged(AbsListView view, int scrollState) { 
    } 
} 

Trả lời

1

Cố Bộ luật này có thể hữu ích cho bạn ..

GridView gridView = (GridView) gv.findViewById(R.id.grid_view); 
gridView.setOnScrollListener(new OnScrollListener() { 

     @Override 
     public void onScrollStateChanged(AbsListView view, int scrollState) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onScroll(AbsListView view, int firstVisibleItem, 
       int visibleItemCount, int totalItemCount) { 
      // TODO Auto-generated method stub 
      Log.e("GridView","firstVisibleItem"+firstVisibleItem+"\nLastVisibleItem"+totalItemCount); 
      } 
     } 
    }); 
19

Tạo biến toàn cầu myLastVisiblePos trong hoạt động của bạn, và tiết kiệm cho mỗi FirstVisiblePosition, khi OnScroll kiện kiểm tra FirstVisiblePosition hiện tại với FirstVisiblePosition đã lưu của bạn nếu Greate so với FirstVisiblePosition được lưu sau cùng của bạn, sau đó cuộn lên nếu nhỏ rồi cuộnDown:

int myLastVisiblePos;// global variable of activity 

//save first value when you create GridView 
GridView gridView = (GridView) gv.findViewById(R.id.grid_view); 
myLastVisiblePos = gridView.getFirstVisiblePosition(); 

gridView.setOnScrollListener(new OnScrollListener() { 
    @Override 
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
      int currentFirstVisPos = view.getFirstVisiblePosition(); 
      if(currentFirstVisPos > myLastVisiblePos) { 
       //scroll down 
      } 
      if(currentFirstVisPos < myLastVisiblePos) { 
       //scroll up 
      } 
      myLastVisiblePos = currentFirstVisPos; 
    } 
}); 
+0

Cảm ơn bạn rất nhiều. Tôi chắc chắn sẽ thử tùy chọn này. Trên màn hình của tôi nếu tôi cuộn một chút, tôi có thể nhìn thấy cả vị trí hiển thị đầu tiên và cuối cùng cùng một lúc. Tôi nghĩ tôi có thể phải thay đổi số –

+0

Cảm ơn bạn rất nhiều. Tôi chắc chắn sẽ thử tùy chọn này. Trên màn hình của tôi nếu tôi cuộn lên hoặc xuống một chút, tôi có thể nhìn thấy cả vị trí hiển thị đầu tiên và cuối cùng cùng một lúc. Nếu tôi di chuyển xuống và để nó trong miiddle tôi muốn hiển thị vị trí cuối cùng trên màn hình và cách tương tự nếu tôi cuộn lên, tôi muốn hiển thị vị trí đầu tiên trên màn hình. Tôi nghĩ tôi có thể phải thay đổi myLastVisiblePos = GridView.getFirstVisiblePosition(); tới myLastVisiblePos = GridView.getLastVisiblePosition(); nếu không tôi sẽ so sánh 1 = 1 trong câu lệnh if đầu tiên. Hãy giúp tôi. –

+0

Shri Ksai Tôi thành thật không hiểu câu hỏi của bạn, bạn có thể thêm một ảnh chụp màn hình để hiểu những gì bạn muốn gửi email của tôi –

Các vấn đề liên quan