Ejemplo n.º 1
0
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    TextView folder = null;
    CheckBox check = null;
    if (row == null) {
      LayoutInflater inflater = LayoutInflater.from(context);
      row = inflater.inflate(R.layout.folder_adapter_row, parent, false);
      folder = (TextView) row.findViewById(R.id.folder);
      folder.setOnClickListener(
          new View.OnClickListener() {

            @Override
            public void onClick(View folder) {
              int position = (Integer) folder.getTag();
              // FolderAdapter.this.clear();
              directory.browseTo(position);
              currentChecked = -1;
              FolderAdapter.this.notifyDataSetChanged();
              doneButton.setEnabled(false);
            }
          });
      check = (CheckBox) row.findViewById(R.id.checkbox);
      check.setOnCheckedChangeListener(
          new CompoundButton.OnCheckedChangeListener() {

            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
              // update last checked position
              int position = (Integer) buttonView.getTag();
              if (isChecked) currentChecked = position;
              else if (currentChecked == position) currentChecked = -1;
              FolderAdapter.this.notifyDataSetChanged();
              if (isChecked) doneButton.setEnabled(true);
            }
          });
    }
    folder = (TextView) row.findViewById(R.id.folder);
    folder.setText(directory.get(position));
    folder.setTag(new Integer(position));
    check = (CheckBox) row.findViewById(R.id.checkbox);
    // disable the "Up one level" checkbox; otherwise make sure its enabled
    if (position == 0 && !directory.isCurrentDirectoryRoot()) check.setEnabled(false);
    else check.setEnabled(true);
    check.setTag(new Integer(position));
    // set check state. only one can be checked
    boolean status = (currentChecked == position) ? true : false;
    check.setChecked(status);
    return (row);
  }