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();
}
}
공유 recycrleview 코드 –
나는 코드를 추가 – iONsky