Đây là cách tôi giải quyết này, hy vọng nó sẽ giúp những người tìm kiếm. Điều quan trọng là để đính kèm một OnScrollListener vào danh sách, theo dõi khi một cử chỉ đang được xử lý, và khi kết thúc danh sách đã đạt được. Sau đó, trong khi fling vẫn đang diễn ra, tiếp tục đặt lại vị trí để kết thúc nếu hệ thống cố gắng di chuyển nó.
private ListView mListView;
private ListAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_list);
mListView = (ListView) findViewById(R.id.listView);
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, getList(25));
mListView.setAdapter(mAdapter);
mListView.setOverScrollMode(View.OVER_SCROLL_NEVER);
if(Build.VERSION.SDK_INT == Build.VERSION_CODES.GINGERBREAD || Build.VERSION.SDK_INT == Build.VERSION_CODES.GINGERBREAD_MR1){
mListView.setOnScrollListener(new OnScrollListener(){
private boolean flinging = false;
private boolean reachedEnd = false;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
flinging = (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_FLING);
reachedEnd = false;
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if(reachedEnd && flinging && (firstVisibleItem + visibleItemCount < totalItemCount)){
mListView.setSelection(mAdapter.getCount() - 1);
}else if(firstVisibleItem + visibleItemCount == totalItemCount){
reachedEnd = true;
}else{
reachedEnd = false;
}
}
});
}
}
Nguồn
2014-04-01 05:03:12
Kiểm tra câu trả lời này: http://stackoverflow.com/questions/5778820/is-there-a-way-to-disable-android-listview-animation – vladexologija
Kiểm tra câu trả lời này. Hoạt động hoàn hảo. http://stackoverflow.com/questions/7777803/listview-top-highlight-on-scrolling/17569996#17569996 – kord
Bạn đã bao giờ tìm ra giải pháp cho hiệu ứng thư bị trả lại phiền toái không? Tôi cũng thấy nó trong danh sách của tôi. – Brian