2017-01-10 42 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

感谢您纠正,只是为了确保地方是把你的代码正确的地方 –

相关问题