2013-10-04 75 views
-1

我有一個ListView和大量的進入它的項目(如高數百)。我希望能夠像20個項目一樣啓動ListView,並隨着用戶的滾動而增長,因此它不是「壓倒性的」如何在滾動時增長ListView

我該如何去做這件事?

+0

請記住,你將存儲在某些人的手機上的所有對象在RAM上。只是分頁。 – yams

回答

1

這是我如何做的:

我做了一個觀察的滾動視圖類。

public class ObservableScrollView extends ScrollView{ 
    private ScrollViewListener scrollViewListener = null; 

    public ObservableScrollView(Context context) { 
     super(context); 
    } 

    public ObservableScrollView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    public ObservableScrollView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public void setScrollViewListener(ScrollViewListener scrollViewListener) { 
     this.scrollViewListener = scrollViewListener; 
    } 

    @Override 
    protected void onScrollChanged(int x, int y, int oldx, int oldy) { 
     super.onScrollChanged(x, y, oldx, oldy); 
     if(scrollViewListener != null) { 
      scrollViewListener.onScrollChanged(this, x, y, oldx, oldy); 
     } 
    } 

}

我創建了一個叫做滾動查看監聽器的新界面。

public interface ScrollViewListener { 
void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy); 

}

然後在活動我實現了這個接口。

public class MainActivity extends Activity implements 
    ScrollViewListener { 

然後它會迫使你使用下面的方法。如果我沒有記錯的話,DISTANCE_FROM_BOTTOM是以像素爲單位。

請注意,如果用戶正在更改滾動位置並在diff <= DISTANCE_FROM_BOTTOM之間的範圍內,將調用LOADNEXTTHINGS()。你應該有一個負載值來控制這個......就像

if(diff <= DISTANCE_FROM_BOTTOM && !loadingNextThings){ 
    loadingNextThings = true; 
    LOADNEXTTHINGS(); 
} 

那麼你就加載完成接下來的事情就要做loadingNextThings = false;

就個人而言,我更喜歡用有限狀態機的時候。

0

你可以實現拉來刷新。檢查here與完整的源代碼

0

您可以使用無盡的適配器,它只是通知你當你到達列表視圖底部,所以你可以添加更多的數據到適配器。比如每次到達底部時添加20個元素。

這裏是鏈接:

https://github.com/commonsguy/cwac-endless