2017-06-10 10 views
-2

リストを次のアクティビティに渡そうとしていますが、クラスキャスト例外をどうやって解決できますか?モデルクラスでシリアライズ可能です。 誰かが問題の解決に手伝ってください。リストを別のアクティビティにスクロールする

次のアクティビティに次のようにフェッチ
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); 
    } 

PagesSqliteData details = (PagesSqliteData)getIntent().getSerializableExtra("LIST"); 

答えて

0

あなたは1つの単純な理由のためにClassCastExceptionを取得します。あなたのコードのこのコメントバージョンを見てください:

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

そして、あなたはロードするとき:

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

をですから、保存するときに、ArrayListのを無視します。代わりにpagesSqliteを渡してください。そして、このクラスがSerializableかParcelableのどちらかであることを確認してください。または、ロードするときに、ArrayListにロードします。あなたがしていることは、次のものと同等です:

PagesSqliteData data = new ArrayList<PagesSqliteData>(); 

これはあなたができないことです。

0

Eタイプがシリアライズ可能な場合も同じ方法でArrayListを渡すことができます。

格納するIntentのputExtra(String name、Serializable value)、および取得するためのgetSerializableExtra(String name)を呼び出します。

例:

ArrayList<String> myList = new ArrayList<String>(); 
intent.putExtra("mylist", myList); 
In the other Activity: 

ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("mylist"); 

[参照:] [How to pass ArrayList<CustomeObject> from one activity to another?1

関連する問題