2016-06-14 58 views
0

我有一個活動(MainWordsActivity),其具有通過從數據庫中的數據填充一個ListView,當點擊它項目中的一個我通過數據庫中的該行及其對ListView的位置到另一個位置的活性(DetailActivity) 。我還在DetailActivity中有一個下一個按鈕,每次點擊時,我都希望ListView中的下一個項目顯示在相同的活動和視圖上。我想要的是在單擊nextButton之後在Listview上顯示下一個項目。 如何訪問下一個項目,或者是否可以通過使用Cursor實現此目的。 感謝下一個項目,Next按鈕,

MainWordsActivity

private ArrayList<Word> testing; 
@Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 

     ArrayList<Word> result = new ArrayList<Word>(); 

     Word word = testing.get(position); 
     Intent intent = new Intent(this, DetailActivity.class); 

     Bundle extras = new Bundle(); 
     extras.putInt("pos", position); 

     extras.putParcelable(".model.Word", word); 
     intent.putExtras(extras); 
     startActivity(intent); 

    } 

DetailActivity

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.word_detail); 

     Intent intent = getIntent(); 
     Bundle extras = intent.getExtras(); 
     pos = extras.getInt("pos"); 

     word = extras.getParcelable(".model.Word"); 

     refreshDisplay(); 
enter code here 
     Button butNext = (Button) findViewById(R.id.nextBut); 

     butNext.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       pos ++; 


     ??? 

} 

}); 
} 

回答

0

我認爲實現這一目標的最佳途徑是通過Word對象的數組還有posDetailActivity

由於WordParcelable對象,你可以使用putParcelableArrayList()把整個testingArrayListBundle。試試這個:

MainWordsActivity

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 

    Intent intent = new Intent(this, DetailActivity.class); 

    Bundle extras = new Bundle(); 
    extras.putInt("pos", position); 
    extras.putParcelableArrayList(".model.Word", testing); 

    intent.putExtras(extras); 

    startActivity(intent); 

} 

而在你DetailActivity

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.word_detail); 

    Intent intent = getIntent(); 
    Bundle extras = intent.getExtras(); 
    pos = extras.getInt("pos"); 

    ArrayList<Word> words = extras.getParcelableArrayList(".model.Word"); 
    word = words.get(pos); 

    refreshDisplay(); 

    Button butNext = (Button) findViewById(R.id.nextBut); 
    butNext.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      pos++; 
      word = words.get(pos); // get the next word from the list 

      refreshDisplay(); // I am assuming this updates the UI 
      /* ANY OTHER UI CHANGES CAN GO HERE */ 
     } 
    }); 
} 

這應該實現你想要的。我假設refreshDisplay()將更新用戶界面,但如果不是這樣,那麼您將根據新的word更新用戶界面。您也應該檢查,以確保你不要去出界你ArrayList

此外,我刪除了這條線:

ArrayList<Word> result = new ArrayList<Word>();

MainWordsActivity因爲你似乎並沒有被完全可以使用它。

+0

謝謝,它工作! –

+0

@ M.mirzaie很高興能幫到你! – omkarmoghe