2014-06-13 2 views
0

필자는 목록 조각과 세부 조각을 가지고 있습니다. 목록보기의 내용을 스크롤 한 후 항목을 클릭하면 상세 조각으로 리디렉션됩니다. 세부 조각에서 돌아 왔을 때, 내 목록 조각은 스크롤 위치를 유지해야합니다. 나는이 시도 :하지만 그 목록 조각 다시로드 :리스트보기 스크롤 위치 유지

public void onSaveInstanceState(Bundle outState) { 
     // TODO Auto-generated method stub 

     mFirstVisiblePosition = mListview.getFirstVisiblePosition(); 
     // get offset 
     View v = mListview.getChildAt(0); 
     mTopOffset = (v == null) ? 0 : v.getTop(); 
     outState.putInt("currentScrollPOsition", mTopOffset); 
     super.onSaveInstanceState(outState); 
    } 

나는 목록 스크롤 위치를 저장하고에 내가 그것을 검색하는거야 만드는거야 :

: 여기
@Override 
    public void onCreate(Bundle savedInstanceState) { 

     if (savedInstanceState != null) { 
      mTopOffset = savedInstanceState.getInt("currentScrollPOsition"); 
      mListview.setSelectionFromTop(mFirstVisiblePosition, mTopOffset); 
     } 
     super.onCreate(savedInstanceState); 
    } 

내 어댑터입니다 사전에
public class Adapter extends ArrayAdapter<Item> { 

    private LayoutInflater mInflater; 

    public RssAdapter(Context context, List<Item> itemsList) { 

     super(context, R.layout.news_items, itemsList); 

     mInflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    private static class Placeholder { 
     TextView Textview1, Textview2; 

    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     Placeholder holder; 

     if (convertView == null) { 
      holder = new Placeholder(); 
      convertView = mInflater.inflate(R.layout.news_items, parent, false); 
      holder.Textview1 = (TextView) convertView 
        .findViewById(R.id.title); 
      holder.Textview2 = (TextView) convertView 
        .findViewById(R.id.date); 

      convertView.setTag(holder); 
     } else { 
      holder = (Placeholder) convertView.getTag(); 
     } 

     Item currentItem = getItem(position); 
     if (currentItem != null) { 
      String title = currentItem.title; 
      holder.mTitleTextview.setText(title); 

      String date = currentItem.pubDate; 
      holder.mDateTextview.setText(date); 

     } else { 
      Toast.makeText(getContext(), "No item to display", 
        Toast.LENGTH_LONG).show(); 
     } 
     return convertView; 
    } 

} 

그러나이 아니 working..Can 사람이 나를 도와 .. 감사합니다 ..

+0

쇼 목록보기 어댑터를. – Dev

+0

의미 ... 죄송합니다. 당신을 얻지 못했습니다. 미안합니다. – user3698989

+0

목록보기 어댑터를 보여주세요. – Dev

답변

0

저장 표시되는 첫 번째 포지 기 상단 오프셋 :

public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    mFirstVisiblePosition = mListview.getFirstVisiblePosition(); 
    // get offset 
    View v = mListview.getChildAt(0); 
    mTopOffset = (v == null) ? 0 : v.getTop(); 
    outState.putInt("firstVisiblePosition",mFirstVisiblePosition); // Save first visible position 
    outState.putInt("currentScrollPOsition", mTopOffset); 
} 

그런 다음, 너무 처음 표시되는 위치를 복원

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    if (savedInstanceState != null) { 
     mTopOffset = savedInstanceState.getInt("currentScrollPOsition"); 
     mFirstVisiblePosition = savedInstanceState.getInt("firstVisiblePosition"); // restore first visible position 
     mListview.setSelectionFromTop(mFirstVisiblePosition, mTopOffset); 
    } 
} 
+0

시도했지만 작동하지 않았습니다 ... 조각 자체에 직접 써야합니까? – user3698989

+0

예, 조각에 있습니다. onCreate 대신 onActivityCreated에서 복원을 시도하십시오. – adboco

+0

나는 작동하지 않는 것을 시도했다 – user3698989

관련 문제