0

私は都市の配列を持っています -

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

私は3つのテキストビュー固定)を持つリストにそれらを表示しています。
これは、一度に 3 つの都市を表示することを意味します。
都市を表示する方法は次のとおりです。


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


このリストにエンドレス スクロール機能を追加したいと考えています。
つまり、ユーザーが上にスワイプし、リストが最後の 3 つの要素に達した場合、最初の要素から再び開始する必要があります。

例 -
1. 現在の表示 - 最後の 3 つの要素 - "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]);
}

iCityまたはなどがiCity + 1に達するとlength、実際のインデックスは自動的に になり0ます。長さ未満の値の場合、modulus演算子がないかのように、通常どおりに動作します。

このようにして、好きなだけアイテムのサイクルを作成できます。したがって、これは一般化された拡張可能なソリューションです。

于 2013-02-19T06:55:07.203 に答える
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 に答える
0
void swipeUp()
{   if(iCity == cities.length()){
        iCity = 0;
        setUpCityList(iCity++);

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

このようなことを試してください。

于 2013-02-19T06:53:50.793 に答える