我有一节课
public class Days implements Serializable {
private String id;
private List<Hours> hours;
//getters and setters
}
课时
public class Hours implements Serializable{
private String id;
private String comments;
//getters and setters
}
我还有一个带有ExpandableList的活动,该活动将天数显示为组,将小时显示为子项。 当我点击特定小时时,我会将对象时间传递给另一个活动进行编辑。
public class DaysListActivity extends ExpandableListActivity
implements OnChildClickListener
{
//Other methods
@Override
public boolean onChildClick(parameters...)
{
Intent i = new Intent(getApplicationContext(),HourActivity.class);
i.putExtra("hourClicked",day.getHour(idHourClicked));
startActivity(i);
}
}
在HourActivity.class中
public class HourActivity extends Activity{
@Override
public void onCreate(Bundle savedInstance)
{
...
Intent i = getIntent();
Hour hour = (Hour) i.getSerializableExtra("hourClicked");
updateHour(hour);
....
}
public void updateHour(Hour hour)
{
hour.setComment("Hellow world");
Toast toast = Toast.makeText(getApplicationContext(), hour.getComment(), Toast.LENGHT_SHORT);
toast.show();
}
}
一切顺利,吐司给我看“Hello world”。但是当我回到DayListActivity时,我点击并更新的小时保持相同的值,它不会刷新。 Wrost,如果我再次点击同一个小时,我就好像它从未更新为“Hello world”
我已经尝试过适配器上的notifyDataSetChanged()和ExpandableListView上的invalidateViews()。 我错过了哪一步?
答案 0 :(得分:2)
这是另一个对象。你已经序列化了这个对象,在另一个活动中处理了新对象并回来了。
使用startActivityForResult打开子活动,然后在返回之前序列化生成的对象。
在onActivityResult中,再次反序列化它。你已经完成了。
你在这方面拥有大量资源How do I pass data between Activities in Android application?
顺便说一下......我会做一个主要细节的事情,所以对于儿童活动我只会发送记录的ID并在我回来时重新加载数据。