下一项,nextButton,

时间:2016-06-14 17:55:45

标签: android listview

我有一个Activity(MainWordsActivity),它有一个ListView填充来自数据库的数据,当点击其中一个项目时,我将该行的数据库及其在ListView上的位置传递给另一个活动(DetailActivity)。我在DetailActivity中也有一个下一个按钮,每次单击它时,我希望ListView中的下一个项目显示在相同的活动和视图上。我想要的是在单击nextButton后显示Listview上的下一个项目。 如何访问下一个项目,或者是否可以通过使用Cursor实现此目的。 谢谢

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 ++;


        ???

}

});
}

1 个答案:

答案 0 :(得分:0)

我认为实现此目标的最佳方法是将Word对象数组和pos传递给DetailActivity

由于WordParcelable个对象,您可以使用putParcelableArrayList()将整个testing ArrayList放入Bundle。试试这个:

<强> 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()将更新UI,但如果不是,那么您将根据新的word更新UI。您还应该检查以确保不会超出ArrayList

的界限

此外,我删除了这一行:

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

来自MainWordsActivity,因为您似乎根本没有使用它。