2013-02-19 70 views
0

我有城市的陣列 -
Android的 - 圓形陣列顯示器

String[] cities = { "Riyadh", "Jubail", "Jeddah", "Madinah", 
     "Tabuk","Bangalore","Chennai","Pune" }; 

我在具有3 TextView的固定)的列表顯示它們。
這意味着我們將一次顯示三個城市。
這裏是顯示城市的方法。


void setUpCityList(int iCity) { 
    tvOneCity.setText(cities[iCity]); 
    tvTwoCity.setText(cities[iCity + 1]); 
    tvThreeCity.setText(cities[iCity + 2]); 
} 


當用戶刷了,我是遞增索引和用戶刷下來,我很遞減索引。

void swipeUp() 
{ 
    iCity++; 
    setUpCityList(iCity); 
} 

void swipeDown() 
{ 
    iCity--; 
    setUpCityList(iCity); 
} 


我想給這個列表中的無盡的滾動功能。
這意味着如果用戶向上滑動 - 並且列表達到最後三個元素,它應該再次從第一個元素開始。

實施例 -
1.當前顯示 - 最後三個要素 - 「班加羅爾」, 「奈」, 「普納」
2.向上滑動 - 顯示應該是 - 奈,普納,利雅

我如何實現此功能。
這更像是一個編程問題。
任何幫助將不勝感激。

+0

檢查:http://stackoverflow.com/questions/2332847/how-to-create-a-closed-circular-listview – Naveen 2013-02-19 06:53:30

+0

檢查堆棧溢出這個帖子: http://stackoverflow.com/questions/1080811/android-endless-list – 2013-02-19 06:54:34

回答

4

你只需要更改索引在你的方法:

void setUpCityList(int iCity) { 
    int length = cities.length; 

    tvOneCity.setText(cities[iCity % length]); 
    tvTwoCity.setText(cities[(iCity + 1) % length]); 
    tvThreeCity.setText(cities[(iCity + 2) % length]); 
} 

一旦iCityiCity + 1等,達到length,實際指標將自動成爲0。而對於小於長度的值,它將表現正常,好像沒有modulus運算符。

這樣你就可以創建一個你想要的項目的週期。所以,這是一個廣義和可擴展的解決方案。

+0

+1。這是我正在尋找的答案。謝謝 。 :) – Anukool 2013-02-19 07:33:37

0
​​

嘗試類似這樣的東西。

+1

如果'iCity + 1 == cities.length()'會怎麼樣? – 2013-02-19 07:17:14

0

你可以試試這個:

void swipeUp() 
{ 
iCity++; 
if (iCity > urMaxlength){ 
    iCity =0; 
} 
setUpCityList(iCity); 
} 

void swipeDown() 
{ 
iCity--; 
if (iCity < urMinlength){ 
    iCity =urMaxlength; 
} 
setUpCityList(iCity); 
} 
+1

如果'iCity == maxLength - 1'會怎麼樣?在這種情況下,'iCity + 2'將出界。 – 2013-02-19 07:18:05