Created
September 5, 2014 16:56
-
-
Save crakaC/43fa186dde6549bd8607 to your computer and use it in GitHub Desktop.
リストビューの一番上に静かに挿入するためのやつ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private ListView mListView; | |
private ArrayAdapter<twitter4j.Status> mAdapter; | |
private twitter4j.Status mFirstVisibleStatus; | |
private int mFirstVisibleOffset = -1; | |
protected void savePosition() { | |
if (mAdapter.isEmpty()) return; | |
mFirstVisibleStatus = mAdapter.getItem(mListView.getFirstVisiblePosition()); | |
mFirstVisibleOffset = mListView.getChildAt(0).getTop(); | |
} | |
protected void restorePosition() { | |
if (mFirstVisibleStatus != null) { | |
int pos = mAdapter.getPosition(mFirstVisibleStatus); | |
mListView.setSelectionFromTop(pos, mFirstVisibleOffset); | |
} | |
} | |
protected void insertQuietly(twitter4j.Status status) { | |
if (isResumed()) { | |
savePosition(); | |
} | |
mAdapter.insert(status, 0); | |
restorePosition(); | |
} | |
protected void flushQueue(List<twitter4j.Status> statuses) { | |
if (statuses != null) { | |
savePosition(); | |
for (ListIterator<twitter4j.Status> ite = statuses.listIterator(statuses.size()); ite.hasPrevious(); ) { | |
twitter4j.Status status = ite.previous(); | |
if (mAdapter.getPosition(status) < 0) { | |
mAdapter.insert(status, 0); | |
} | |
} | |
restorePosition(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment