-2

I am trying to pass list to next activity but its giving me classcast exception how can i solve it?I am implementing serializable in model class. Someone help me in resolving the issue.

List<PagesSqliteData>pagesSqliteDataArrayList = new ArrayList<>();
            PagesSqliteData pagesSqlite = new PagesSqliteData();
        pagesSqlite.setToc_name(bookingsSqliteDataArrayList.get(position).getToc_name());
         pagesSqlite.setCompletion(bookingsSqliteDataArrayList.get(position).getCompletion());

        pagesSqlite.setCategory_id(bookingsSqliteDataArrayList.get(position).getCategory_id());

        pagesSqlite.setBooking_id(bookingsSqliteDataArrayList.get(position).getBooking_id());
        pagesSqlite.setTable_of_content_id(bookingsSqliteDataArrayList.get(position).getTable_of_content_id());

        pagesSqliteDataArrayList.add(pagesSqlite);

        Intent i = new Intent(MyBookings.this, Pages.class);
            i.putExtra("LIST",pagesSqliteDataArrayList);
            startActivity(i);
    }

Fetching like this in next activity:

PagesSqliteData details = (PagesSqliteData)getIntent().getSerializableExtra("LIST");
Dev
  • 75
  • 2
  • 11

1 Answers1

0

You get a ClassCastException for one simple reason. Look at this commented version of your code:

List<PagesSqliteData>pagesSqliteDataArrayList = new ArrayList<>();//HERE YOU CREATE AN ARRAYLIST!!!
        PagesSqliteData pagesSqlite = new PagesSqliteData();
    pagesSqlite.setToc_name(bookingsSqliteDataArrayList.get(position).getToc_name());
     pagesSqlite.setCompletion(bookingsSqliteDataArrayList.get(position).getCompletion());

    pagesSqlite.setCategory_id(bookingsSqliteDataArrayList.get(position).getCategory_id());

    pagesSqlite.setBooking_id(bookingsSqliteDataArrayList.get(position).getBooking_id());
    pagesSqlite.setTable_of_content_id(bookingsSqliteDataArrayList.get(position).getTable_of_content_id());

    pagesSqliteDataArrayList.add(pagesSqlite);

    Intent i = new Intent(MyBookings.this, Pages.class);
        i.putExtra("LIST",pagesSqliteDataArrayList);
        startActivity(i);

And when you load:

PagesSqliteData details = (PagesSqliteData)getIntent().getSerializableExtra("LIST");//HERE IT IS SUDDENLY A SINGLE OBJECT

So when you save, ignore the arrayList. Pass pagesSqlite instead. And make sure this class is either Serializable or Parcelable. Or when you load, load it into an ArrayList. What you do is equivalent to:

PagesSqliteData data = new ArrayList<PagesSqliteData>();

And that is something you can't do.

Zoe
  • 27,060
  • 21
  • 118
  • 148