-
-
Save anonymous/ef4110483c3d55b2d5fa to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package uk.co.jackdh.tapchat; | |
import android.app.AlertDialog; | |
import android.app.ListActivity; | |
import android.support.v7.app.ActionBarActivity; | |
import android.os.Bundle; | |
import android.util.Log; | |
import android.view.Menu; | |
import android.view.MenuItem; | |
import android.view.View; | |
import android.widget.AdapterView; | |
import android.widget.ArrayAdapter; | |
import android.widget.HeaderViewListAdapter; | |
import android.widget.ListAdapter; | |
import android.widget.ListView; | |
import com.parse.FindCallback; | |
import com.parse.Parse; | |
import com.parse.ParseException; | |
import com.parse.ParseQuery; | |
import com.parse.ParseRelation; | |
import com.parse.ParseUser; | |
import com.parse.SaveCallback; | |
import java.util.List; | |
public class EditContactsActivity extends ActionBarActivity { | |
public static final String TAG = EditContactsActivity.class.getSimpleName(); | |
protected List<ParseUser> mUsers; | |
protected ParseRelation<ParseUser> mFriendsRelation; | |
protected ParseUser mCurrentUser; | |
private ListView mListView; | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_edit_contacts); | |
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); | |
} | |
protected ListView getListView() { | |
if (mListView == null) { | |
mListView = (ListView) findViewById(android.R.id.list); | |
} | |
return mListView; | |
} | |
protected void setListAdapter(ListAdapter adapter) { | |
getListView().setAdapter(adapter); | |
} | |
protected ListAdapter getListAdapter() { | |
ListAdapter adapter = getListView().getAdapter(); | |
if (adapter instanceof HeaderViewListAdapter) { | |
return ((HeaderViewListAdapter)adapter).getWrappedAdapter(); | |
} else { | |
return adapter; | |
} | |
} | |
@Override | |
protected void onResume() { | |
super.onResume(); | |
mCurrentUser = ParseUser.getCurrentUser(); | |
mFriendsRelation = mCurrentUser.getRelation(ParseConstants.KEY_FRIENDS_RELATION); | |
ParseQuery<ParseUser> query = ParseUser.getQuery(); | |
query.orderByAscending(ParseConstants.KEY_USERNAME); | |
query.setLimit(1000); | |
query.findInBackground(new FindCallback<ParseUser>() { | |
@Override | |
public void done(List<ParseUser> parseUsers, ParseException e) { | |
if (e == null) { | |
//success | |
mUsers = parseUsers; | |
String[] usernames = new String[mUsers.size()]; | |
int i = 0; | |
for (ParseUser user : mUsers) { | |
usernames[i] = user.getUsername(); | |
i++; | |
} | |
ArrayAdapter<String> adapter = new ArrayAdapter<String>(EditContactsActivity.this, android.R.layout.simple_list_item_checked, usernames); | |
getListView().setAdapter(adapter); | |
addFriendCheckMarks(); | |
} else { | |
//error | |
Log.e(TAG, e.getMessage()); | |
AlertDialog.Builder builder = new AlertDialog.Builder(EditContactsActivity.this); | |
builder.setMessage(e.getMessage()) | |
.setTitle(R.string.error_title) | |
.setPositiveButton(android.R.string.ok, null); | |
AlertDialog dialog = builder.create(); | |
dialog.show(); | |
} | |
} | |
}); | |
} | |
private void addFriendCheckMarks() { | |
mFriendsRelation.getQuery().findInBackground( new FindCallback<ParseUser>() { | |
@Override | |
public void done(List<ParseUser> parseUsers, ParseException e) { | |
if (e == null) { | |
//List returned look for match. | |
for (int i = 0; i < mUsers.size(); i++) { | |
ParseUser user = mUsers.get(i); | |
for (ParseUser contact : parseUsers) { | |
if (contact.getObjectId().equals(user.getObjectId())) { | |
getListView().setItemChecked(i, true); | |
getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() { | |
@Override | |
public void onItemClick(AdapterView<?> parent, View view, int position, long 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 ) {} | |
} | |
}); | |
} | |
}); | |
} | |
} | |
} | |
} else { | |
Log.e(TAG, e.getMessage()); | |
} | |
} | |
}); | |
} | |
@Override | |
public boolean onOptionsItemSelected(MenuItem item) { | |
// Handle action bar item clicks here. The action bar will | |
// automatically handle clicks on the Home/Up button, so long | |
// as you specify a parent activity in AndroidManifest.xml. | |
int id = item.getItemId(); | |
//noinspection SimplifiableIfStatement | |
if (id == R.id.action_settings) { | |
return true; | |
} | |
return super.onOptionsItemSelected(item); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment