2011-08-23 18 views
6

各タブにリストを表示するtabViewがあります。あるタブでスクロールすると、別のタブに切り替えて前のタブに戻ります。前のスクロール位置を表示する代わりに、その位置が上に戻ります。これをどのように達成するのですか? onSaveInstanceState & onRestoreInstanceStateを使用して位置を保存し、以前にスクロールした位置を表示する際に保存された位置を使用するにはどうすればよいか知る必要があります。リストビューの位置を保存して復元する方法

ありがとうございました。


ご返信ありがとうございます。私はすべてのソリューションを試しましたが、他の問題に遭遇しました。 基本的に私が直面している問題は以下の通りです。

私は自分のアプリを起動するときに私の最初の活動としてリストビューを持っています。 リストアイテムをクリックすると、3つのタブを含むタブアクティビティが起動されます。 3つのタブはすべて、ListActivityと同じアクティビティを使用します。しかし3つのタブには異なるデータが含まれています。 私の質問は、タブを切り替えるとリストの位置を保持する方法です。上記のソリューションを提供すると、あるタブで位置を変更すると、残りのタブにも影響します。たとえば、私が最初のタブの位置6にある場合、この位置は2番目と3番目のタブに設定され、3つのタブすべてで同じListActivityが使用されます。私はコードを共有することはできません。だから、この長い間、問題をタイプする必要があります。作成されるタブの数も動的です。 3または4または5かもしれませんが、すべてのタブは1 ListActivityを使用します。

誰でも私にこれを達成する方法の例を教えてもらえますか? 1.単一のListActivityが複数のタブで使用されています。 2.他のタブに影響を与えずにタブ内のカーソル位置を保持する。

解決策が提供されています。 ありがとうございます。

+0

新しいリストビューを作成したりしているようですね何らかの形で、タブに切り替えるたびにコンテンツを更新します。親切にコードを投稿できますか? –

+0

あなたを助けるかもしれない、以下の記事を参照してください。 http://stackoverflow.com/questions/3014089/maintain-save-restore-scroll-position-when-returning-to-a-listview – Xebozone

答えて

12

リストビューでsetAdapter()を再度コールしないでください。このようなことをしてください。

if(myListView.getAdapter() == null) 
    myListView.setAdapter(new myAdapter(this, R.layout.row, items)); 

アダプタのListViewコールnotifyDataSetChanged()を更新する必要がある場合。

10

あなたのListViewの現在位置を取得するには、それがどのように依存します、あなたがそのリストビューとバックタブに移動したら、あなたは

mCatchList.setSelection(position); 

を呼び出すことができます次に

int position = mCatchList.getFirstVisiblePosition(); 

を呼び出すことができますその位置をsavedInstanceStateに追加する必要があるかどうかを判断するためにコードが書き込まれます。

+0

がそれです浮動姿勢を得ることは可能ですか?私がそうすると、ビューの位置の先頭にジャンプします。 –

+0

これは、一番上のビューを取得し、画面上のどのくらい表示されているかを調べることによって可能です。私はこれのための例を持っていないが、私はかなり速い検索が何かをもたらすことをかなり確信している – hooked82

+0

私はそれがpreasbleオブジェクトを保存し、それを復元することが可能であることがわかった。 –

1

onSaveInstanceStateを上書きし、位置をonRestoreInstanceStateに戻します。バンドルは、一種のHashMapの、(擬似コード)のようなものです:onSaveInstanceState

bundle.putInt("MyTabsPosition", getPosition()); 

次にonRestoreInstanceStateに:

pseudo.setPosition(bundle.getInt("MyTabsPosition")); 
関連する問題