示例#1
0
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_profile_edit);

    ParseUser currentUser = ParseUser.getCurrentUser();

    // get UI components
    userPic = (ImageView) findViewById(R.id.view_curr_pic);
    nameEdit = (EditText) findViewById(R.id.profile_name_edit);
    addressEdit = (EditText) findViewById(R.id.profile_address_edit);
    phoneEdit = (EditText) findViewById(R.id.profile_user_phone_edit);
    phoneShareEdit = (Switch) findViewById(R.id.phone_switch_edit);
    resetPassword = (Button) findViewById(R.id.reset_password_button);
    saveChangesB = (Button) findViewById(R.id.save_changes_button);
    changePicB = (Button) findViewById(R.id.change_pic_button);

    // init ui components with user details
    ParseFile p = (ParseFile) currentUser.get("photo");
    if (p != null) {
      try {
        Bitmap b = BitmapFactory.decodeByteArray(p.getData(), 0, p.getData().length);
        userPic.setImageBitmap(b);
      } catch (ParseException e) {
        Log.d("ProfileEdit", e.getMessage());
      }
    }
    nameEdit.setHint(currentUser.get("name").toString());
    addressEdit.setHint(Utils.addressToString(currentUser.getJSONArray("address")));
    phoneEdit.setHint(currentUser.get("phone").toString());
    phoneShareEdit.setChecked(currentUser.getBoolean("sharePhone"));
    resetPassword.setOnClickListener(this);
    saveChangesB.setOnClickListener(this);
    changePicB.setOnClickListener(this);

    // handle address selection
    ImageButton addressChangeButton = (ImageButton) findViewById(R.id.profile_address_change_edit);
    addressChangeButton.setOnClickListener(this);

    // handle user availability changes
    final LinearLayout availabilityItems =
        (LinearLayout) findViewById(R.id.edit_profile_availability_items);
    availabilityAdapter = new UserAvailabilityAdapter(this);
    availabilityAdapter.registerDataSetObserver(
        new DataSetObserver() {
          @Override
          public void onChanged() {
            availabilityItems.removeAllViews();
            for (int i = 0; i < availabilityAdapter.getCount(); i++) {
              View row = availabilityAdapter.getView(i, null, availabilityItems);
              availabilityItems.addView(row);
            }
          }

          @Override
          public void onInvalidated() {
            availabilityItems.removeAllViews();
          }
        });

    // query all availability of current user and fill the adapter
    final ParseQuery<ParseObject> userAvailabilityQuery = new ParseQuery<>("UserAvailability");
    userAvailabilityQuery.whereEqualTo("user", currentUser);
    userAvailabilityQuery.findInBackground(
        new FindCallback<ParseObject>() {
          @Override
          public void done(List<ParseObject> userAvailabilities, ParseException e) {
            if (e == null) {
              userAvailabilitiesList = userAvailabilities;
              int id = 0;
              for (ParseObject userAvailability : userAvailabilities) {
                AvailabilityRecord record = new AvailabilityRecord();
                record.setTimeFrom(userAvailability.getInt("startTime"));
                record.setTimeUntil(userAvailability.getInt("endTime"));
                record.setTag(id++);
                JSONArray days = userAvailability.getJSONArray("days");
                for (int i = 0; i < days.length(); i++) {
                  try {
                    record.setDay(days.getInt(i) - 1, true);
                  } catch (JSONException e1) {
                  }
                }
                availabilityAdapter.add(record);
              }
              availabilityAdapter.add(new AvailabilityRecord());
              availabilityAdapter.notifyDataSetChanged();
            }
          }
        });
  }