2013-02-19 76 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