import android.view.SubMenu;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.AbsListView;
+import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
* @author Andrew Neal (andrewdneal@gmail.com)
*/
public class SongFragment extends Fragment implements LoaderCallbacks<SectionListContainer<Song>>,
- OnItemClickListener, MusicStateListener {
+ OnScrollListener, OnItemClickListener, MusicStateListener {
/**
* Used to keep context menu items from bleeding into other fragments
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create the adpater
- mAdapter = new SectionAdapter<Song, SongAdapter>(getActivity(), new SongAdapter(getActivity(), R.layout.list_item_simple));
+ mAdapter = new SectionAdapter<Song, SongAdapter>(getActivity(), new SongAdapter(getActivity(), R.layout.list_item_normal));
}
/**
mListView.setOnCreateContextMenuListener(this);
// Play the selected song
mListView.setOnItemClickListener(this);
+ // To help make scrolling smooth
+ mListView.setOnScrollListener(this);
return mRootView;
}
* {@inheritDoc}
*/
@Override
+ public void onScrollStateChanged(final AbsListView view, final int scrollState) {
+ // Pause disk cache access to ensure smoother scrolling
+ if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_FLING
+ || scrollState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
+ mAdapter.getUnderlyingAdapter().setPauseDiskCache(true);
+ } else {
+ mAdapter.getUnderlyingAdapter().setPauseDiskCache(false);
+ mAdapter.notifyDataSetChanged();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void onScroll(final AbsListView view, final int firstVisibleItem,
+ final int visibleItemCount, final int totalItemCount) {
+ // Nothing to do
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public void onItemClick(final AdapterView<?> parent, final View view, final int position,
final long id) {
int internalPosition = mAdapter.getInternalPosition(position);