/** Saves the scrolling position of every visible limiter */ public void maintainPosition() { for (int i = MAX_ADAPTER_COUNT; --i != -1; ) { if (mAdapters[i] != null) { sLruAdapterPos.storePosition(mAdapters[i], mLists[i].getFirstVisiblePosition()); } } }
@Override public boolean handleMessage(Message message) { switch (message.what) { case MSG_RUN_QUERY: { LibraryAdapter adapter = (LibraryAdapter) message.obj; int index = adapter.getMediaType(); Handler handler = mUiHandler; handler.sendMessage(handler.obtainMessage(MSG_COMMIT_QUERY, index, 0, adapter.query())); break; } case MSG_COMMIT_QUERY: { int pos = 0; int index = message.arg1; mAdapters[index].commitQuery(message.obj); Limiter curLimiter = mAdapters[index].getLimiter(); Integer curPos = sLruAdapterPos.getPosition(mAdapters[index]); if (curPos != null) pos = (int) curPos; mLists[index].setSelection(pos); break; } case MSG_SAVE_SORT: { MediaAdapter adapter = (MediaAdapter) message.obj; SharedPreferences.Editor editor = PlaybackService.getSettings(mActivity).edit(); editor.putInt( String.format("sort_%d_%d", adapter.getMediaType(), adapter.getLimiterType()), adapter.getSortMode()); editor.commit(); break; } case MSG_REQUEST_REQUERY: requestRequery((LibraryAdapter) message.obj); break; default: return false; } return true; }