I am new to android programming
I tried to implement a Intent passing Data from my Listview to another Activity using onItemClick listener, but I got stuck.
Following my codes:
ListviewActivity Activity showing a list of saved books with booktitle, bookauthor ... ...
booklistView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(getApplicationContext(), BookInfoActivity.class);
editTextBooktitle = (TextView) findViewById(R.id.text_book_title);
String book_title = editTextBooktitle.getText().toString();
intent.putExtra(EXTRA_MSG1, book_title);
editTextBookauthor = (TextView) findViewById(R.id.text_book_author);
String bookauthor = editTextBookauthor.getText().toString();
intent.putExtra(EXTRA_MSG2, bookauthor);
editTextBookdate = (TextView) findViewById(R.id.text_book_date);
String bookdate = editTextBookdate.getText().toString();
intent.putExtra(EXTRA_MSG3, bookdate);
editTextBookrating = (TextView) findViewById(R.id.text_book_rating);
String bookrating = editTextBookrating.getText().toString();
intent.putExtra(EXTRA_MSG4, bookrating);
editTextBookshelf = (TextView) findViewById(R.id.text_book_shelf);
String bookshelf = editTextBookshelf.getText().toString();
intent.putExtra(EXTRA_MSG5, bookshelf);
startActivity(intent);
BookInfoActivity for getting the information - it is like a detail view of the book which is stored in a sql database, especially shown in the listview.
Intent intent = getIntent();
String book_title = intent.getStringExtra(BookDataListActivity.EXTRA_MSG1);
passedbooktitle = (EditText) findViewById(R.id.passed_booktitle);
passedbooktitle.setText(book_title);
String book_author = intent.getStringExtra(BookDataListActivity.EXTRA_MSG2);
passedbookauthor = (EditText) findViewById(R.id.passed_bookauthor);
passedbookauthor.setText(book_author);
String book_date = intent.getStringExtra(BookDataListActivity.EXTRA_MSG3);
passedbookdate = (EditText) findViewById(R.id.passed_bookdate);
passedbookdate.setText(book_date);
String book_rating = intent.getStringExtra(BookDataListActivity.EXTRA_MSG4);
passedbookrating = (EditText) findViewById(R.id.passed_bookrating);
passedbookrating.setText(book_rating);
String book_shelf = intent.getStringExtra(BookDataListActivity.EXTRA_MSG5);
passedbookshelf = (EditText) findViewById(R.id.passed_bookshelf);
passedbookshelf.setText(book_shelf);
When I run the application it only passes the data from the first row to the other activity. Any suggestions how I can pass the data for each row to the second activity
Assuming that you have different book layouts with different data in every cell, you should use view
to findViewById
:
booklistView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(getApplicationContext(), BookInfoActivity.class);
editTextBooktitle = (TextView) view.findViewById(R.id.text_book_title);
String book_title = editTextBooktitle.getText().toString();
intent.putExtra(EXTRA_MSG1, book_title);
editTextBookauthor = (TextView) view.findViewById(R.id.text_book_author);
String bookauthor = editTextBookauthor.getText().toString();
intent.putExtra(EXTRA_MSG2, bookauthor);
editTextBookdate = (TextView) view.findViewById(R.id.text_book_date);
String bookdate = editTextBookdate.getText().toString();
intent.putExtra(EXTRA_MSG3, bookdate);
editTextBookrating = (TextView) view.findViewById(R.id.text_book_rating);
String bookrating = editTextBookrating.getText().toString();
intent.putExtra(EXTRA_MSG4, bookrating);
editTextBookshelf = (TextView) view.findViewById(R.id.text_book_shelf);
String bookshelf = editTextBookshelf.getText().toString();
intent.putExtra(EXTRA_MSG5, bookshelf);
startActivity(intent);
}
}
Use
view.findViewById
instead of
findViewById
Every list item has findViewById(R.id.text_book_title). So it finds you the first one. By using the view you select the text_book_title of the item clicked.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.