Android Open Source - spots Group List Activity






From Project

Back to project page spots.

License

The source code is released under:

MIT License

If you think the Android project spots 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.dcc.matc89.spots.activity;
//  w  ww.j a v  a  2  s  .c om
import java.io.Serializable;
import java.util.List;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.dcc.matc89.spots.R;
import com.dcc.matc89.spots.model.Group;
import com.dcc.matc89.spots.model.Spot;
import com.dcc.matc89.spots.model.User;
import com.dcc.matc89.spots.network.FetchGroups;
import com.dcc.matc89.spots.network.OnResultReceiver;
import com.dcc.matc89.spots.network.FetchGroups.OnGroupsReceiver;
import com.dcc.matc89.spots.network.PostLinkSpotGroup;

public class GroupListActivity extends ActionBarActivity {

  private static final int CODE_ADD_GROUP = 1;
  public static final String SPOT_KEY = "spot_key";
  public static final String USER_KEY = "user_key";
  
  private TextView mTextEmpty;
  private View mProgressLoading;
  private ListView mListView;
  
  private Spot mSpot;
  private User mUser;
  private List<Group> mGroups;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_group_list);
    
    mTextEmpty = (TextView) findViewById(R.id.group_list_empty);
    mProgressLoading = findViewById(R.id.pgs_groups);
    mListView = (ListView) findViewById(R.id.list);
    mListView.setOnItemClickListener(onItemClickListener);

    mSpot = (Spot) getIntent().getSerializableExtra(SPOT_KEY);
    mUser = (User) getIntent().getSerializableExtra(USER_KEY);
    
    // Show the Up button in the action bar.
    setupActionBar();

    loadGroups();
    
  }

  /**
   * Set up the {@link android.app.ActionBar}.
   */
  private void setupActionBar() {
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    if(mUser == null) // Only show "Add Group" if this list is not a list from some other user
      getMenuInflater().inflate(R.menu.group_list, menu);
    return true;
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
      // This ID represents the Home or Up button. In the case of this
      // activity, the Up button is shown. Use NavUtils to allow users
      // to navigate up one level in the application structure. For
      // more details, see the Navigation pattern on Android Design:
      //
      // http://developer.android.com/design/patterns/navigation.html#up-vs-back
      //
      NavUtils.navigateUpFromSameTask(this);
      return true;
    case R.id.action_group_add:
      Intent i = new Intent(this, MyGroupsListActivity.class);
      i.putExtra(MyGroupsListActivity.SELECT_GROUP, true);
      startActivityForResult(i, CODE_ADD_GROUP);
    }
    return super.onOptionsItemSelected(item);
  }
  
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == CODE_ADD_GROUP && resultCode == RESULT_OK){
      Group group = (Group) data.getSerializableExtra(MyGroupsListActivity.GROUP_SELECTED);
      if(group.containsSpot(mSpot)){
        Toast.makeText(this, R.string.the_spot_already_contains_this_group_, Toast.LENGTH_SHORT).show();
        return;
      }
      mSpot.getGroupsIds().add(group.getId());
      group.getSpots().add(mSpot.getId());
      new PostLinkSpotGroup().linkSpotGroup(mSpot, group, new OnResultReceiver() {
        
        @Override
        public void onResult(boolean okay, String result) {
        }
      });
      mGroups.add(group);
      ((BaseAdapter) mListView.getAdapter()).notifyDataSetChanged();
    }
  }

  private OnItemClickListener onItemClickListener = new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position,
        long id) {
      Intent i = new Intent(GroupListActivity.this, GroupDetailActivity.class);
      i.putExtra(GroupDetailActivity.GROUP_KEY, (Serializable) adapterView.getAdapter().getItem(position));
      startActivity(i);
    }
  };

  
  private void showGroups(List<Group> result) {
    mProgressLoading.setVisibility(View.INVISIBLE);
    mGroups = result;
    if(result == null || result.isEmpty())
      mTextEmpty.setVisibility(View.VISIBLE);
    else{
      mTextEmpty.setVisibility(View.INVISIBLE);
      ListAdapter adapter = new ArrayAdapter<Group>(GroupListActivity.this, android.R.layout.simple_list_item_1, result);
      mListView.setAdapter(adapter);
    }
  }

  private void loadGroups() {
    if(mSpot != null){
      new FetchGroups().getGroupsFromSpot(onGroupsReceiver, mSpot.getId());
    } else if(mUser != null){
      new FetchGroups().getGroupsFromUser(onGroupsReceiver, mUser.getId());
    }
  }
  
  private OnGroupsReceiver onGroupsReceiver = new OnGroupsReceiver() {
    
    @Override
    public void onGroupsReceived(List<Group> groups) {
      showGroups(groups);
    }
  };

}




Java Source Code List

com.dcc.matc89.spots.activity.GroupDetailActivity.java
com.dcc.matc89.spots.activity.GroupEditActivity.java
com.dcc.matc89.spots.activity.GroupListActivity.java
com.dcc.matc89.spots.activity.LoginActionBarActivity.java
com.dcc.matc89.spots.activity.LoginActivity.java
com.dcc.matc89.spots.activity.MainActivity.java
com.dcc.matc89.spots.activity.MyGroupsListActivity.java
com.dcc.matc89.spots.activity.SpotDetailActivity.java
com.dcc.matc89.spots.activity.SpotEditActivity.java
com.dcc.matc89.spots.activity.SpotListActivity.java
com.dcc.matc89.spots.activity.UserDetailActivity.java
com.dcc.matc89.spots.activity.UserListActivity.java
com.dcc.matc89.spots.model.Group.java
com.dcc.matc89.spots.model.Sport.java
com.dcc.matc89.spots.model.Spot.java
com.dcc.matc89.spots.model.StaticDatabase.java
com.dcc.matc89.spots.model.User.java
com.dcc.matc89.spots.network.FetchGroupsAsyncTask.java
com.dcc.matc89.spots.network.FetchGroups.java
com.dcc.matc89.spots.network.FetchSportsAsyncTask.java
com.dcc.matc89.spots.network.FetchSports.java
com.dcc.matc89.spots.network.FetchSpotsAsyncTask.java
com.dcc.matc89.spots.network.FetchSpots.java
com.dcc.matc89.spots.network.FetchUsersAsyncTask.java
com.dcc.matc89.spots.network.FetchUsers.java
com.dcc.matc89.spots.network.OnResultReceiver.java
com.dcc.matc89.spots.network.PostGroupsAsyncTask.java
com.dcc.matc89.spots.network.PostGroups.java
com.dcc.matc89.spots.network.PostLinkSpotGroupAsyncTask.java
com.dcc.matc89.spots.network.PostLinkSpotGroup.java
com.dcc.matc89.spots.network.PostSpotsAsyncTask.java
com.dcc.matc89.spots.network.PostSpots.java
com.dcc.matc89.spots.network.PostUsersAsyncTask.java
com.dcc.matc89.spots.network.PostUsers.java
com.dcc.matc89.spots.network.Utils.java
com.dcc.matc89.spots.social.FacebookFragment.java
com.dcc.matc89.spots.social.LoginFragment.java
com.dcc.matc89.spots.social.OnUserLoginListener.java
com.dcc.matc89.spots.view.CheckboxesDropdownView.java
com.dcc.matc89.spots.view.DropdownView.java