private void saveListViewVisiblePosition(byte fileType) {
   int firstVisiblePosition = list.getFirstVisiblePosition();
   ConfigurationManager.instance()
       .setInt(
           Constants.BROWSE_PEER_FRAGMENT_LISTVIEW_FIRST_VISIBLE_POSITION + fileType,
           firstVisiblePosition);
 }
 private void restoreListViewScrollPosition() {
   if (adapter != null) {
     int savedListViewVisiblePosition = getSavedListViewVisiblePosition(adapter.getFileType());
     savedListViewVisiblePosition =
         (savedListViewVisiblePosition > 0) ? savedListViewVisiblePosition + 1 : 0;
     list.setSelection(savedListViewVisiblePosition);
   }
 }
  @Override
  protected void initComponents(View v) {
    filesBar = findView(v, R.id.fragment_browse_peer_files_bar);
    filesBar.setOnActionListener(
        new OnActionListener() {
          public void onCheckAll(View v, boolean isChecked) {
            if (adapter != null) {
              if (isChecked) {
                adapter.checkAll();
              } else {
                adapter.clearChecked();
              }
            }
          }

          public void onFilter(View v, String str) {
            if (adapter != null) {
              adapter.getFilter().filter(str);
            }
          }

          @Override
          public void onClear() {
            clearPreviousFilter();
          }
        });

    list = findView(v, R.id.fragment_browse_peer_list);
    list.setOverScrollListener(
        new OverScrollListener() {
          @Override
          public void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
            long now = SystemClock.elapsedRealtime();
            if (scrollY < 0 && clampedY && (now - lastAdapterRefresh) > 5000) {
              refreshSelection();
            }
          }
        });

    initRadioButton(v, R.id.fragment_browse_peer_radio_torrents, Constants.FILE_TYPE_TORRENTS);
    initRadioButton(v, R.id.fragment_browse_peer_radio_documents, Constants.FILE_TYPE_DOCUMENTS);
    initRadioButton(v, R.id.fragment_browse_peer_radio_pictures, Constants.FILE_TYPE_PICTURES);
    initRadioButton(v, R.id.fragment_browse_peer_radio_videos, Constants.FILE_TYPE_VIDEOS);
    initRadioButton(v, R.id.fragment_browse_peer_radio_ringtones, Constants.FILE_TYPE_RINGTONES);
    initRadioButton(v, R.id.fragment_browse_peer_radio_audio, Constants.FILE_TYPE_AUDIO);
  }
  private void updateFiles(Object[] data) {
    if (data == null) {
      LOG.warn("Something wrong, data is null");
      return;
    }

    try {
      byte fileType = (Byte) data[0];

      @SuppressWarnings("unchecked")
      List<FileDescriptor> items = (List<FileDescriptor>) data[1];
      adapter =
          new FileListAdapter(getActivity(), items, fileType) {

            @Override
            protected void onItemChecked(View v, boolean isChecked) {
              if (!isChecked) {
                filesBar.clearCheckAll();
              }
            }

            @Override
            protected void onLocalPlay() {
              if (adapter != null) {
                saveListViewVisiblePosition(adapter.getFileType());
              }
            }
          };
      adapter.setCheckboxesVisibility(true);
      restorePreviouslyChecked();
      restorePreviousFilter();
      list.setAdapter(adapter);

    } catch (Throwable e) {
      LOG.error("Error updating files in list", e);
    }
  }