private void descriptionDialog() {
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
    final EditText textInput = new EditText(this);

    textInput.setText(selected.getTrackDescription());
    textInput.setSelectAllOnFocus(true);

    textInput.requestFocus();
    textInput.postDelayed(
        new Runnable() {
          @Override
          public void run() {
            InputMethodManager keyboard =
                (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            keyboard.showSoftInput(textInput, 0);
          }
        },
        100);

    dialogBuilder.setTitle("Set Description (max 3 lines)");
    dialogBuilder.setView(textInput);
    dialogBuilder.setNegativeButton(
        "Confirm",
        new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
            String description = textInput.getText().toString();
            data.setTrackDescription(selected, description);
            Toast.makeText(ActivityTracksListView.this, "Description changed!", Toast.LENGTH_SHORT)
                .show();
            populateListView();
          }
        });
    dialogBuilder.setPositiveButton(
        "Cancel",
        new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
          }
        });

    AlertDialog dialogRename = dialogBuilder.create();
    dialogRename.show();
  }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
      View itemView = convertView;
      if (itemView == null) {
        itemView = getLayoutInflater().inflate(R.layout.tracks_item_view, parent, false);
      }

      // Find the album to work with
      final TrackItem currentTrack = data.getCurrentAlbum().getTracksList().get(position);

      // Make
      final TextView sizeText = (TextView) itemView.findViewById(R.id.size);
      sizeText.setText(currentTrack.getTrackSize());
      final TextView makeText = (TextView) itemView.findViewById(R.id.trackTextView);
      final TextView makeDescription = (TextView) itemView.findViewById(R.id.track_description);
      final ImageView makeimage = (ImageView) itemView.findViewById(R.id.imageView);
      makeText.setText(currentTrack.getTrackName());
      makeText.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              stopPlayer();
              selected = currentTrack;
              track_text.setText(currentTrack.getTrackName());
              startPlayer(selected);
            }
          });
      makeText.setOnLongClickListener(
          new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
              selected = currentTrack;
              return false;
            }
          });

      // Make Description

      makeDescription.setText(currentTrack.getTrackDescription());
      makeDescription.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              stopPlayer();
              selected = currentTrack;
              track_text.setText(currentTrack.getTrackName());
              startPlayer(selected);
            }
          });
      makeDescription.setOnLongClickListener(
          new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
              selected = currentTrack;
              return false;
            }
          });

      makeDescription.setText(currentTrack.getTrackDescription());
      makeimage.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              stopPlayer();
              selected = currentTrack;
              track_text.setText(currentTrack.getTrackName());
              startPlayer(selected);
            }
          });
      makeimage.setOnLongClickListener(
          new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
              selected = currentTrack;
              return false;
            }
          });

      play_button.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              if (mediaPlayer != null) mediaPlayer.start();
              else if (selected != null) startPlayer(selected);
            }
          });

      pause_button.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              if (mediaPlayer != null) {
                mediaPlayer.pause();
              }
            }
          });

      stop_button.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              stopPlayer();
              trackSeekBar.setProgress(0);
              current_duration.setText("00:00");
            }
          });

      trackSeekBar.setOnSeekBarChangeListener(
          new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

              if (fromUser && seekBar.isInTouchMode()) {
                progressValue = progress;
              }
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {}

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
              if (mediaPlayer != null) {
                mediaPlayer.seekTo(progressValue);
              } else {
                trackSeekBar.setProgress(progressValue);
              }
            }
          });

      return itemView;
    }