2013-02-14 15 views
9

我有一個列表視圖有100個項目,我想顯示前10個項目,點擊下一個按鈕我必須顯示下一個10即。 11至20,我有代碼獲得前10項如何限制列表中的列表項顯示在10和下一個10之後點擊下一步按鈕

public int getCount() { 
     return 10; 
    } 

但如何獲得下10項單獨等。 任何想法

+0

看看這個例子:http://pastebin.com/UmjBqpsP – jlopez 2013-02-14 07:25:53

+0

http://stackoverflow.com/questions/1080811/android-endless-list http://www.androidhive。info/2012/03/android-listview-with-load-more-button/ – rajeshwaran 2013-02-14 07:27:05

+0

我必須只使用一個listview,並且它必須單獨顯示下一個19而不是1到10 – saran 2013-02-14 07:31:09

回答

6

的一種方法是,

1)不要與所有的數據填充的ArrayList。請將它們保存在單獨的ArrayList(al1)中,並使用帶有最大10個值的ArrayList(al2)與BaseAdapter配合使用。

2)首先,

  • AL2 = AL1 [0]至AL1 [9]
  • BaseAdatper(上下文數據)

3)保持BaseAdapter,因爲它是但變化

@Override 
public int getCount() { 
return 10; 
} 

@Override 
public int getCount() { 
return data.size(); 
} 

這不是必須的,但它是很好的做法。現在,您將只顯示10個項目,因爲這是您傳遞給適配器的所有內容。在擴展的BaseAdatper類中寫一個公共函數來設置data變量。

4)在下一個按鈕單擊事件獲取從al1接下來的10個項目,並分配給al2。使用你寫的公共函數寫dataal2

5)BaseAdapter has a method called notifyDataSetChanged,叫它。它所做的是告訴適配器從頂部到底部刷新。由於您在發生刷新時用data重寫了新數據,因此您將看到新數據。而已。

我不認爲你會想出一種方法來跟蹤你目前顯示的al1中的哪個索引。 :)

+0

如何讓al2 = al1 [0]到al1 [9],因爲即時通訊使用像這樣的ArrayList產品列表,ArrayList array_sort – saran 2013-02-14 09:48:33

+0

我不確定你在問什麼。你在問如何從一個索引中獲得值 - 或者如何跟蹤下一個索引,你應該從'al1'獲取數據? – JanithaR 2013-02-14 10:02:29

+0

是如何從al1 [0]到al1 [9] – saran 2013-02-14 10:04:46

3

如果您有100個項目,那麼只需拿到適配器的前10個項目,並且當用戶按下下一個時,獲取下一個10個項目,依此類推。

編輯:在請求代碼,我可以提供一個簡單的例子,如何做分頁。

int totalItems = 100; 
int currentPage = 0; 
int pageSize = 10; 
int numPages = (int) Math.ceil((float) totalItems/pageSize); 

ArrayList<String> items = new ArrayList<String>(totalItems); 

List<String> page = items.subList(currentPage, pageSize); 

看看上面的例子中,給出的項目數和所需的頁面大小就可以計算出你需要多少頁顯示,則可以選擇從ArrayList的子列表。每次用戶按next時,遞增currentPage並使用新的子列表刷新適配器。要做到這一點

+0

你可以發表任何代碼,所以我可以理解它 – saran 2013-02-14 07:27:50

+1

好的,但你需要先發布你有什麼代碼,你是否使用數組列表或其他東西數據源? – 2013-02-14 07:29:16

+0

我正在使用arraylist來存儲數據,並顯示和slao使用適配器類擴展BaseAdapter – saran 2013-02-14 07:33:28

相關問題