Android Open Source - ribbit Edit Friends Activity






From Project

Back to project page ribbit.

License

The source code is released under:

MIT License

If you think the Android project ribbit listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.lleshiart.ribbit;
//  w ww . j a v a  2s . c  o  m
import java.util.List;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.parse.FindCallback;
import com.parse.ParseException;
import com.parse.ParseQuery;
import com.parse.ParseRelation;
import com.parse.ParseUser;
import com.parse.SaveCallback;

public class EditFriendsActivity extends ListActivity {
  
  public static final String TAG = EditFriendsActivity.class.getSimpleName();
  
  protected List<ParseUser> mUsers;
  protected ParseRelation<ParseUser> mFriendsRelation;
  protected ParseUser mCurrentUser;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    setContentView(R.layout.activity_edit_friends);
    
    getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
  }
  
  @Override
  protected void onResume() {
    super.onResume();
    
    mCurrentUser = ParseUser.getCurrentUser();
    mFriendsRelation = mCurrentUser.getRelation(ParseConstants.KEY_FRIENDS_RELATION);
    
    setProgressBarIndeterminateVisibility(true);
    
    ParseQuery<ParseUser> query = ParseUser.getQuery();
    query.orderByAscending(ParseConstants.KEY_USERNAME);
    query.setLimit(1000);
    query.findInBackground(new FindCallback<ParseUser>() {
      
      @Override
      public void done(List<ParseUser> users, ParseException e) {
        setProgressBarIndeterminateVisibility(false);
        
        if (e==null) {
          // Success
          mUsers = users;
          String[] usernames = new String[mUsers.size()];
          int i = 0;
          for(ParseUser user : mUsers) {
            usernames[i] = user.getUsername();
            i++;
          }
          ArrayAdapter<String> adapter = new ArrayAdapter<>(
              EditFriendsActivity.this, android.R.layout.simple_list_item_checked, usernames);
          setListAdapter(adapter);
          
          addFriendCheckmarks();
        }
        else {
          Log.e(TAG, e.getMessage());
          AlertDialog.Builder builder = new AlertDialog.Builder(EditFriendsActivity.this);
          builder.setMessage(e.getMessage())
            .setTitle(R.string.error_title)
            .setPositiveButton(android.R.string.ok, null);
          AlertDialog dialog = builder.create();
          dialog.show();
        }
      }
    });
  }
  
  @Override
  protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    
    if(getListView().isItemChecked(position)) {
      // add friend
      mFriendsRelation.add(mUsers.get(position));
    }
    else {
      // remove friend
      mFriendsRelation.remove(mUsers.get(position));
    }
    
    mCurrentUser.saveInBackground(new SaveCallback() {
      
      @Override
      public void done(ParseException e) {
        if (e != null) {
          Log.e(TAG, e.getMessage());
        }
      }
    });
  }
  
  private void addFriendCheckmarks() {
    mFriendsRelation.getQuery().findInBackground(new FindCallback<ParseUser>() {

      @Override
      public void done(List<ParseUser> friends, ParseException e) {
        if (e == null) {
          // list was returned - look for a match
          for (int i=0; i < mUsers.size(); i++) {
            ParseUser user = mUsers.get(i);
            
            for(ParseUser friend : friends) {
              if (friend.getObjectId().equals(user.getObjectId())) {
                getListView().setItemChecked(i, true);
              }
            }
            
          }
        }
        else {
          Log.e(TAG, e.getMessage());
        }
      }
    });
  }
}




Java Source Code List

com.lleshiart.ribbit.EditFriendsActivity.java
com.lleshiart.ribbit.FileHelper.java
com.lleshiart.ribbit.ForgotPasswordActivity.java
com.lleshiart.ribbit.FriendsFragment.java
com.lleshiart.ribbit.ImageResizer.java
com.lleshiart.ribbit.InboxFragment.java
com.lleshiart.ribbit.LoginActivity.java
com.lleshiart.ribbit.MainActivity.java
com.lleshiart.ribbit.MessageAdapter.java
com.lleshiart.ribbit.NewMessageActivity.java
com.lleshiart.ribbit.ParseConstants.java
com.lleshiart.ribbit.RecipientsActivity.java
com.lleshiart.ribbit.SectionsPagerAdapter.java
com.lleshiart.ribbit.SignUpActivity.java
com.lleshiart.ribbit.ViewImageActivity.java