2014-01-09 53 views
1

所以我被這個問題困住了幾個小時。我基本上有一個textviews數組,並希望在它們之間滑動。我有的數組是從0到19.事實是遞增工作是完美的,但是當我遞減[0]的值時,索引變爲[-1],所以它崩潰了。數組遞減索引

我需要做一些事情,以便當我得到索引[0]並減少索引跳回到[19]。

這裏是代碼和我的嘗試與否則。非常感謝!!!

mPreviousButton = (Button) findViewById(R.id.prev_btn); 
    mPreviousButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      mCurrentIndex = (mCurrentIndex - 1) % mShowTipsTextBank.length; 
      if (mCurrentIndex < 19) { 
       mCurrentIndex = 19; 
       updateQuestion(); 
      } else 

       updateQuestion(); 

     } 
    }); 

回答

0
mPreviousButton = (Button) findViewById(R.id.prev_btn); 
    mPreviousButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mCurrentIndex--; 
      if (mCurrentIndex < 0) 
       mCurrentIndex = mShowTipsTextBank.length - 1; 
      updateQuestion(); 
     } 
    }); 
+0

感謝你很多Autocrab!奇蹟般有效。 NP: – beLejer

+0

NP。如果這是一個正確的答案,然後接受它。 – Autocrab

0

的問題是,if (mCurrentIndex < mShowTipsTextBank.length) {永遠是true

您可以檢查當前的指數是0,將其設置爲您的數組的最後一個索引直接否則只是遞減它

@Override 
public void onClick(View v) { 
    mCurrentIndex = (mCurrentIndex == 0 ? mShowTipsTextBank.length-1 : (mCurrentIndex - 1)); 
    updateQuestion();  
} 

注意,模運算是無用的,因爲mCurrentIndex應該總是比下length你的數組(如果你增加了相應的檢查)。

+0

是的,你是對的。我應該首先檢查19。我正在測試你的代碼。非常感謝!! – beLejer

0
if(mCurrentIndex == 0){ 
    mCurrentIndex = 19; 
}else{ 
    mCurrentIndex--; 
} 
0
mCurrentIndex = (mCurrentIndex - 1) % mShowTipsTextBank.length; 
     if (mCurrentIndex < 0) { 
      mCurrentIndex = 19; 
      updateQuestion(); 
     } else 
      { 
      updateQuestion(); 
      } 
2

也有一個襯墊。

遞減:

mCurrentIndex = (mShowTipsTextBank.length + (mCurrentIndex - 1)) % mShowTipsTextBank.length; 

增量:

mCurrentIndex = (mCurrentIndex + 1) % mShowTipsTextBank.length;