2016-06-02 6 views
0

내 최신 안드로이드 앱에서 로더를 사용하여 인터넷에서 데이터를로드하고 있습니다. RecyclerView가 있는데 항목을 클릭하면 새로운 활동이 시작됩니다. 그러나 다시 돌아올 때마다 로더가 데이터를 다시로드하므로 RecyclerView가 업데이트되어 목록의 맨 위로 이동합니다.안드로이드 스톱 로더가 다시 내비게이션으로 다시로드되지 않습니다.

어떻게 그 행동을 멈출 수 있습니까?

MainActivity

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if(savedInstanceState == null) { 
     setContentView(R.layout.activity_main); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     pagerAdapter = new PagerAdapter(getApplicationContext(), getSupportFragmentManager()); 
     viewPager = (ViewPager) findViewById(R.id.pager); 
     viewPager.setAdapter(pagerAdapter); 
     viewPager.setOffscreenPageLimit(3); 

     TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(viewPager); 
    } 
} 

ListFragment

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    getLoaderManager().initLoader(0, null, this); 
} 

@Override 
public Loader onCreateLoader(int id, Bundle args) { 
    return new DataLoader(getActivity()); 
} 

@Override 
public void onLoadFinished(Loader<Object> loader, Object data) { 
    adapter.data = data; 
    adapter.notifyDataSetChanged(); 
} 

코드 새로운 활동을

Intent intent = new Intent(view.getContext(), DetailActivity.class); 
intent.putExtra(DetailFragment.ARG_DATA, data); 
view.getContext().startActivity(intent); 

돌아 가기 탐색을 시작하는

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == android.R.id.home) { 
     // This ID represents the Home or Up button. In the case of this 
     // activity, the Up button is shown. Use NavUtils to allow users 
     // to navigate up one level in the application structure. For 
     // more details, see the Navigation pattern on Android Design: 
     // 
     // http://developer.android.com/design/patterns/navigation.html#up-vs-back 
     // 
     NavUtils.navigateUpTo(this, new Intent(this, MainActivity.class)); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

편집 : 로더 onResume에서 onLoadFinished 호출처럼 RecyclerView 코드

public class ListItemRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 

    public List<Data> data; 

    public ListItemRecyclerViewAdapter(List<Data> data) { 
     data = data; 
    } 

    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     return new ListItemViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_list_item, parent, false)); 
    } 

    @Override 
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
     ((ListItemViewHolder) holder).setData(data.get(position)); 
    } 

    @Override 
    public int getItemCount() { 
     return data.size(); 
    } 
} 
+0

공유 recycrleview 코드 –

+0

나는 코드를 추가 – iONsky

답변