title: Can't scroll ListView properly
body: <p>I have a ListView in a fragment containing data that is download on the net. I keep the data in the cache so I'm able to display informations until the request to the server is finished.</p>
  
  <p>The problem is when I scroll down the listview start to scroll down and after few second it goes to the top automatically, so I can't select element in the bottom of the list because I haven't the time.</p>
  
  <p>The layout of the listView</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent" 
      android:orientation="vertical"&gt;
  
      &lt;ProgressBar
           android:id="@+id/progressbar_line"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           style="?android:attr/progressBarStyleHorizontal"
           android:indeterminate="true"/&gt;
  
      &lt;ListView
          android:id="@+id/list_stop"
          android:layout_width="match_parent"
          android:layout_height="0dip"
          android:layout_weight="1"
          android:choiceMode="singleChoice"
          android:visibility="invisible"
          android:divider="@color/divider_color"
          android:dividerHeight="1dp" /&gt;
  
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>The fragment which use the listView</p>
  
  <pre><code>public class LineFragment extends Fragment implements RestoreActionBar {
  
      private static final String ARG_LINE_NAME = "line_name";
      private static final String ARG_LINE_COLOR = "line_color";
  
      /**
       * A pointer to the current callbacks instance (the Activity).
       */
      private LineFragmentCallbacks mCallbacks;
  
      private Line mLine;
  
      private ProgressBar mProgressBar;
      private ListView mListView;
  
      private DownloadToCache mDownloadToCacheAsyncTask = null;
  
      /**
       * Returns a new instance of this fragment for the given line
       * name.
       */
      public static LineFragment newInstance(String lineName, String lineColor) {
          LineFragment fragment = new LineFragment();
          Bundle args = new Bundle();
          args.putString(ARG_LINE_NAME, lineName);
          args.putString(ARG_LINE_COLOR, lineColor);
          fragment.setArguments(args);
          return fragment;
      }
  
      public LineFragment() {
          mLine = null;
      };
  
      @Override
      public void onDestroy() {
          super.onDestroy();
          if (mDownloadToCacheAsyncTask != null)
              mDownloadToCacheAsyncTask.cancel(true);
      }
  
      @Override
      public void onDestroyView() {
          super.onDestroyView();
          if (mDownloadToCacheAsyncTask != null)
              mDownloadToCacheAsyncTask.cancel(true);
      }
  
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
              Bundle savedInstanceState) {
          View rootView = inflater.inflate(R.layout.fragment_line, container, false);
          mProgressBar = (ProgressBar) rootView.findViewById(R.id.progressbar_line);
          mListView = (ListView) rootView.findViewById(R.id.list_stop);
          mListView.setOnItemClickListener(new OnItemClickListener() {
              @Override
              public void onItemClick(AdapterView&lt;?&gt; parent, View view,
                      int position, long id) {
                  selectItem(position);
              }          
          });
  
          setUpContentListStop(false);
  
          return rootView;
      }
  
      private void selectItem(int position) {
          if (mListView != null) {
              mListView.setItemChecked(position, true);
          }
          if (mCallbacks != null) {
              mCallbacks.onLineFragmentItemSelected(position);
          }
     }
  
      @Override
      public void onAttach(Activity activity) {
          super.onAttach(activity);
  
          mCallbacks = (LineFragmentCallbacks) activity;
  
          File jsonFile = new File(activity.getCacheDir() 
                  + getArguments().getString(ARG_LINE_NAME) 
                  + ".json");
          if (jsonFile.exists()) {
                  mLine = new Line(jsonFile);
          }
  
          ((MainActivity) activity).onSectionAttached(
                  getArguments().getString(ARG_LINE_NAME),
                  getArguments().getString(ARG_LINE_COLOR));
          ((MainActivity) activity).restoreActionBar();
      }
  
      @Override
      public void onDetach() {
          super.onDetach();
          mCallbacks = null;
      }
  
      @Override
      public void restoreActionBar(Activity activity) {
          if (mListView != null) {
              mListView.setItemChecked(mListView.getCheckedItemPosition(), false);
          }
          ((MainActivity) activity).setActionBarProperty(
                  getArguments().getString(ARG_LINE_NAME),
                  Color.parseColor(getArguments().getString(ARG_LINE_COLOR)));
      }
  
      private void onFileInCacheChanged() {
          setUpContentListStop(true);
      }
  
      /**
       * Set up the content of the list
       * @param downloaded true if the json has been download
       */
      private void setUpContentListStop(boolean downloaded) {
          if (getActivity() == null)
              return;
  
          if (Network.isConnected(getActivity())) {
              mDownloadToCacheAsyncTask = new DownloadToCache();
              mDownloadToCacheAsyncTask.execute(
                          getArguments().getString(ARG_LINE_NAME) + ".json",
                          Line.URL_LINE_INFO);
          }
  
          File jsonFile = new File(getActivity().getCacheDir() + "/"
                  + getArguments().getString(ARG_LINE_NAME) 
                  + ".json");
          if (jsonFile.exists()) {
                  mLine = new Line(jsonFile);
                  return;
              }        
  
          mListView.setAdapter(new StopListAdapter(getActivity(), mLine.getListStops()));
          mListView.setVisibility(View.VISIBLE);
          } 
      }
  
      /* -------------AsyncTask class------------ */
      private class DownloadToCache extends AsyncTask&lt;String, Void, Boolean&gt; {
  
      }
  
      /**
       * Callbacks interface that all activities using this fragment must implement.
       */
      public static interface LineFragmentCallbacks {
          /**
           * Called when an item in the list is selected.
           */
          void onLineFragmentItemSelected(int position);
      }
  
  }
  </code></pre>