0

我有一系列城市 -

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

我将它们显示在具有三个文本视图固定)的列表中。
这意味着我们将一次显示三个城市。
这是显示城市的方法。


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. 当前显示 - 最后三个元素 - "Bangalore","Chennai","Pune"
2. 向上滑动 -- 显示应该是 - Chennai , Pune , Riyadh

我怎样才能实现这个功能。
这更像是一个编程问题。
任何帮助将不胜感激。

4

3 回答 3

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]);
}

一旦iCityoriCity + 1等​​达到length,实际索引将自动变为0。对于小于长度的值,它会正常运行,就好像没有modulus运算符一样。

通过这种方式,您可以创建一个包含尽可能多的项目的循环。因此,这是一个通用且可扩展的解决方案。

于 2013-02-19T06:55:07.203 回答
0
void swipeUp()
{   if(iCity == cities.length()){
        iCity = 0;
        setUpCityList(iCity++);

    }
    else{
        iCity++;
        setUpCityList(iCity);
    }
}

尝试这样的事情。

于 2013-02-19T06:53:50.793 回答
0

你可以试试这个:

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

void swipeDown()
{
iCity--;
if ( iCity < urMinlength){
   iCity =urMaxlength;
}
setUpCityList(iCity);
}
于 2013-02-19T06:59:14.510 回答