简体   繁体   中英

Passing sqlite data from listview to other activity

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM