У меня есть 2 класса. В первом классе я пишу данные из List, во втором классе, я хочу прочитать эти данные и поместить в listview. Это сохранить данные правильно, но когда я пытаюсь получить его, LogCat дает ошибку:ObjectInputStream не может правильно нарисовать объект
java.lang.ClassCastException: pl.pawelfrydrych.CHAPS.AdapterPlanuProbOnline$podzialPlanu cannot be cast to pl.pawelfrydrych.CHAPS.AdapterPlanuProbOffline$podzialPlanu
at pl.pawelfrydrych.CHAPS.AdapterPlanuProbOffline$AdapterDlaPlanu.getView(AdapterPlanuProbOffline.java:115)
Я не могу понять, почему, потому что всегда я получаю один и тот же тип данных.
Первый метод класса записи:
public void SaveAsFile(List<podzialPlanu> lista){
// lista - List<podzialPlanu> podzialPlanuList2 = new ArrayList<podzialPlanu>();
try {
FileOutputStream saveFile = new FileOutputStream(Environment.getExternalStorageDirectory().getPath() + "/" + "planProby.sav");
ObjectOutputStream save = new ObjectOutputStream(saveFile);
save.writeObject(lista);
save.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
И главный класс, когда я пытаюсь получить данные из этого файла, и поместить его в мой ListView
public class AdapterPlanuProbOffline extends Activity implements Serializable {
List<String> DzienDataList;
List<String> GodzinaList;
List<String> RodzajList;
List<String> ProgramList;
List<String> UwagiList;
List<String> listaDni;
List<String> listaMiesiecy;
File plik;
public class podzialPlanu implements Serializable{
String DzienData;
String Godzina;
String Rodzaj;
String Program;
String Uwagi;
}
AdapterDlaPlanu nowyAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listviewy);
nowyAdapter = new AdapterDlaPlanu();
ListView listView1 = (ListView) findViewById(R.id.listView1);
listView1.setAdapter(nowyAdapter);
}
public class AdapterDlaPlanu extends BaseAdapter implements Serializable{
List<podzialPlanu> podzialPlanuList = getData();
@Override
public int getCount() {
return podzialPlanuList.size();
}
@Override
public Object getItem(int position) {
return podzialPlanuList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
LayoutInflater inflater = (LayoutInflater) AdapterPlanuProbOffline.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.planproby,parent,false);
}
TextView DzienDataTextView = (TextView) convertView.findViewById(R.id.dzienDataTextView);
TextView GodzinaTextView = (TextView) convertView.findViewById(R.id.godzinaTextView);
TextView RodzajZajecTextView = (TextView) convertView.findViewById(R.id.rodzajzajecTextView);
TextView ProgramTextView = (TextView) convertView.findViewById(R.id.programTextView);
TextView UwagiTextView = (TextView) convertView.findViewById(R.id.uwagiTextView);
/// here is a problem with getData() method
DzienDataTextView.setText(getData().get(position).DzienData);
GodzinaTextView.setText(getData().get(position).Godzina);
RodzajZajecTextView.setText(getData().get(position).Rodzaj);
ProgramTextView.setText(getData().get(position).Program);
UwagiTextView.setText(getData().get(position).Uwagi);
return convertView;
}
public podzialPlanu getPodzialPlanu(int position){
return podzialPlanuList.get(position);
}
}
public List<podzialPlanu> getData() {
List<podzialPlanu> podzialPlanuList2 = new ArrayList<podzialPlanu>();
List< List<String> > listaGlowna = new ArrayList<List<String>>();
for(int i = 0; i < 5; i++) {
listaGlowna.add(new ArrayList<String>());
}
DzienDataList = new ArrayList<String>();
GodzinaList = new ArrayList<String>();
RodzajList = new ArrayList<String>();
ProgramList = new ArrayList<String>();
UwagiList = new ArrayList<String>();
listaDni = new ArrayList<String>();
listaMiesiecy = new ArrayList<String>();
try {
FileInputStream file = new FileInputStream(Environment.getExternalStorageDirectory().getPath() + "/" + "planProby.sav");
ObjectInputStream restore = new ObjectInputStream(file);
podzialPlanuList2 = (List<podzialPlanu>) restore.readObject();
restore.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (StreamCorruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return podzialPlanuList2;
}
Да, что мне делать? Если есть сериализация, то я не могу получить эти данные в другом классе? – Algeroth