2016-06-14 66 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

相关问题