2017-01-10 60 views
0

我的設計有2個活動,第一(all_activity)包含使用BaseAdapter一個ListView的應用程序。當用戶點擊其中一個項目時,它將開始一個新活動(Story_Detalies),其中包含listview中項目的信息。我如何保存滾動條的位置爲我的ListView

我做(all_activity)母公司爲(Story_Detalies)活動,通過使用(Story_Detalies)活動

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

這段代碼,它會顯示一個箭頭去到以前的活動。

ListView中有很多物品,所以當用戶點擊我想列表視圖滾動以同一點,這是以前的箭頭。

而且這是在OnCreate中我的列表視圖代碼(): -

listView1 = (ListView) findViewById(R.id.lisallflashcard); 
    adapter = new AdapterAllQ(getApplicationContext(), rows, prgmImages2,stortype); 
    listView1.setAdapter(adapter); 
+0

試試這個http://stackoverflow.com/questions/3014089/maintain-save-restore-scroll-position-when-returning-to-a-listview –

回答

0

您可以使用getFirstVisiblePosition()找出哪些項目是第一次在屏幕上。接下來,您可以遍歷子元素,直到找到與第一個可見位置相對應的元素,並使用getTop()來計算其垂直偏移量。

int position = listView.getFirstVisiblePosition(); 
int offset = 0; 
for (int i = 0; i < listView.getChildCount(); i++) { 
    View child = listView.getChildAt(i); 
    if (listView.getPositionForView(child) == position) { 
     offset = child.getTop(); 
     break; 
    } 
} 

您可以保存這些值,並在途中用他們回叫setSelectionFromTop(position offset)

+0

我有這個問題解決不了法「getPositionForChild(機器人.view.View)' –

+0

@Mi_Dhah對不起,該方法是'getPositionForView()'。我已經相應地更新了這篇文章。 – Karakuri

+0

感謝您糾正,只是爲了確保地方是把你的代碼正確的地方 –

相關問題