네트워크 호출을 통해 데이터를로드하고 장치가 onSaveInstanceState 콜백에 저장된 데이터를 순환하면 어댑터에 변경 사항이 통지되지만 이후에 활동이 공백이됩니다. 회전. 코드 단편은 다음과 같다 :onSaveInstanceState 콜백에 저장된 장치 데이터가로드되지 않습니다.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
// setSupportActionBar(toolbar);
movies=new ArrayList<Movie_model>();
madapter=new Movie_adapter(this,new Movie_adapter.OnItemClickListener(){
@Override
public void onItemClick(Movie_model movie_item) {
Toast.makeText(getApplicationContext(), "Item Clicked", Toast.LENGTH_LONG).show();
Intent intent=new Intent(getApplicationContext(),MovieDetail.class);
intent.putExtra("Movie_item", movie_item);
intent.putExtra("type", "normal");
startActivity(intent);
};
},movies);
mAdapterFav = new CustomCursorAdapter(this,new CustomCursorAdapter.OnItemClickListener(){
@Override
public void onItemClick(Movie_model movie_item) {
Toast.makeText(getApplicationContext(), "Item Clicked", Toast.LENGTH_LONG).show();
Intent intent=new Intent(getApplicationContext(),MovieDetail.class);
intent.putExtra("Movie_item", movie_item);
intent.putExtra("type", "fav");
startActivity(intent);
};});
recyclerview = (RecyclerView) findViewById(R.id.recyclerview);
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getApplicationContext(),3);
recyclerview.setLayoutManager(mLayoutManager);
recyclerview.setItemAnimator(new DefaultItemAnimator());
recyclerview.setAdapter(madapter);
if(savedInstanceState!=null)
{
// movies.clear();
Log.i("tag", String.valueOf(movies.size()));
movies=savedInstanceState.getParcelableArrayList("list");
madapter.notifyDataSetChanged();
//recyclerview.setAdapter(madapter);
// Log.i("tag", String.valueOf(movies.size()));
}
else
{
mnetworking= new Networking();
mnetworking.execute(discover_movies);
Log.i("tag","in");
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelableArrayList("list",movies);
Log.i("tag", String.valueOf(movies.size()));
}
은 또한리스트의 크기 getParcelableArrayList ("리스트") 후 20주의; 호출됩니다. 그리고 마음 boggler은 해당 어댑터가 다시 초기화 할 때 성명, 데이터는 rotataion에 표시되어있는 경우
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
// setSupportActionBar(toolbar);
movies=new ArrayList<Movie_model>();
madapter=new Movie_adapter(this,new Movie_adapter.OnItemClickListener(){
@Override
public void onItemClick(Movie_model movie_item) {
Toast.makeText(getApplicationContext(), "Item Clicked", Toast.LENGTH_LONG).show();
Intent intent=new Intent(getApplicationContext(),MovieDetail.class);
intent.putExtra("Movie_item", movie_item);
intent.putExtra("type", "normal");
startActivity(intent);
};
},movies);
mAdapterFav = new CustomCursorAdapter(this,new CustomCursorAdapter.OnItemClickListener(){
@Override
public void onItemClick(Movie_model movie_item) {
Toast.makeText(getApplicationContext(), "Item Clicked", Toast.LENGTH_LONG).show();
Intent intent=new Intent(getApplicationContext(),MovieDetail.class);
intent.putExtra("Movie_item", movie_item);
intent.putExtra("type", "fav");
startActivity(intent);
};});
recyclerview = (RecyclerView) findViewById(R.id.recyclerview);
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getApplicationContext(),3);
recyclerview.setLayoutManager(mLayoutManager);
recyclerview.setItemAnimator(new DefaultItemAnimator());
recyclerview.setAdapter(madapter);
if(savedInstanceState!=null)
{
// movies.clear();
Log.i("tag", String.valueOf(movies.size()));
movies=savedInstanceState.getParcelableArrayList("list");
// madapter.notifyDataSetChanged();
madapter=new Movie_adapter(this,new Movie_adapter.OnItemClickListener(){
@Override
public void onItemClick(Movie_model movie_item) {
Toast.makeText(getApplicationContext(), "Item Clicked", Toast.LENGTH_LONG).show();
Intent intent=new Intent(getApplicationContext(),MovieDetail.class);
intent.putExtra("Movie_item", movie_item);
intent.putExtra("type", "normal");
startActivity(intent);
};
},movies);
recyclerview.setAdapter(madapter);
Log.i("tag", String.valueOf(movies.size()));
}
else
{
mnetworking= new Networking();
mnetworking.execute(discover_movies);
Log.i("tag","in");
}
}
그냥 질문이 있습니까? 당신도 Udacity Nanodegree하고 있습니까? –
@KartikSharma 예 –