Skip to content

Instantly share code, notes, and snippets.

@crakaC
Created September 5, 2014 16:56
Show Gist options
  • Save crakaC/43fa186dde6549bd8607 to your computer and use it in GitHub Desktop.
Save crakaC/43fa186dde6549bd8607 to your computer and use it in GitHub Desktop.
リストビューの一番上に静かに挿入するためのやつ
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