2017-10-23 3 views
4

해결하려는 Android 업 네비게이션으로 문제를 해결하는 방법에 대한 의견을 듣고 싶습니다. RecycleView에서 (MainActivity) 액티비티 (API에서 가져 오는 항목의 스크롤 가능 목록 표시)가 있습니다.RecycleView로 내비게이션 사용

Intent intent = new Intent(context, DetailActivity.class); 
intent.putExtra("item", item); 
context.startActivity(intent); 

DetailActivity 사용자가 이전 활동으로 돌아갈 수 위의 버튼을 가지고 각 항목과 같이 항목 세부 활동을 여는 온 클릭 리스너가 있습니다.

<activity 
    android:name=".DetailActivity" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme.Base" 
    android:parentActivityName=".MainActivity"> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value=".MainActivity" /> 
</activity> 

을 그리고 여기에 문제의 : 다음은이 활동에 대한 매니페스트의 내가 부모 활동 탐색 할 때, 스크롤 목록이 재설정되고 상단에 있습니다. 장치의 뒤로 버튼을 사용하면 목록이 유지되고 스크롤 위치는 그대로 유지되지만 위로 버튼을 클릭하면 표시되지 않습니다.

스크롤 목록을 복원하려면 다음과 같이해야합니다. 어딘가에 이미로드 된 항목의 목록을 유지, 어쩌면 DetailActivity 및 뒤로 전달,하지만이 최선의 솔루션을 잘 모르겠습니다 .. 더 나은, 더 우아하고 네이티브 솔루션을 스크롤 항목 및 스크롤 위치 유지 ? 위 내비게이션에 대해 Android documentation을 읽었지만 대답을 찾을 수 없습니다 ...

답변

4

경우 보이는 것 귀하의 앱으로 od를 치고 간단히 "UP"을 잡으십시오. -

+0

정확히 내가 뭘 찾고 있었는지, 많이 고마워! :) – Oleg

0

내 목록에는 이것이 색인을 저장하는 방법이며, 해당 색인에서 RecyclerView를 복원하는 방법입니다. 상단) :

신용
// save index and top position 
int index = mList.getFirstVisiblePosition(); 

View v = mList.getChildAt(0); 
int top = (v == null) ? 0 : (v.getTop() - mList.getPaddingTop()); 

// ... 

// restore index and position 
mList.setSelectionFromTop(index, top); 

: 눌러 "BACK"는 이안 (스택 오버플로)

앱 너무 무거운 것 이미로드 된 항목의 하위 목록을 유지 ...

+0

목록 항목을 어떻게 복원합니까? 그들은 항상 거기에 있습니까? 제 경우에는 API에서 20 개 항목을 가져옵니다. 따라서 사용자가 500 번 항목으로 스크롤하면 사용자가 위로 이동할 때 500 + 20 개 항목을 가져와야합니다. – Oleg

+0

Recycler보기는 다음과 같습니다. 지정된 상단 위치에서 활동에 표시된 마지막 항목으로 복원하십시오. –

+1

다른 응답을 솔루션으로 표시했습니다. 다시 눌러서 위치를 계산할 필요없이 목록을 정확히 복원하는 것처럼 보입니다. 지금까지 작동, 다른 장치에서 테스트해야합니다. – Oleg

관련 문제