Android Open Source - task4java Main Activity






From Project

Back to project page task4java.

License

The source code is released under:

Apache License

If you think the Android project task4java 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

/*
 *  Copyright (c) 2014 Andree Hagelstein, Maik Schulze, Deutsche Telekom AG. All Rights Reserved.
 *  // w w  w .ja va2 s.  co  m
 *  Filename: MainActivity.java
 */

package com.task4java.android.examples.activity;

import java.util.concurrent.ExecutionException;

import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.LinearLayout;

import com.task4java.android.activity.BaseActivity;
import com.task4java.android.annotation.Annotations.ViewMapping;
import com.task4java.android.examples.R;
import com.task4java.android.util.concurrent.HandlerExecutor;
import com.task4java.data.frontend.ApplicationClient;
import com.task4java.data.frontend.model.MainMenuItem;
import com.task4java.data.frontend.model.MainMenuItemGroupList;
import com.task4java.util.concurrent.CallableTask;
import com.task4java.util.concurrent.Task;

public class MainActivity extends BaseActivity {

  @ViewMapping(resourceId = R.id.expandableListView1)
  private ExpandableListView expandableListView;

  @ViewMapping(resourceId = R.id.busy)
  private LinearLayout busyIndicator;

  ExpandableListAdapter listAdapter;

  @Override
  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    initializeView();

    if (expandableListView != null) {

      expandableListView.setOnChildClickListener(new OnChildClickListener() {
        
        @Override
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
        
          MainMenuItem item = ((ExpandableListAdapter)parent.getExpandableListAdapter()).getChild(groupPosition, childPosition);
          
          Intent itemIntent = new Intent(MainActivity.this, item.targetClass);
          startActivity(itemIntent);
          
          return false;
        }
      });
    }

    loadData();
  }

  private void loadData() {

    Task.<Void> fromResult(null)
    .continueWith(taskPreLoadData(), HandlerExecutor.getCurrent())
    .continueWith(taskLoadData())
    .unwrap()
    .continueWith(taskPostLoadData(), HandlerExecutor.getCurrent())
    .continueWith(MainActivity.<Void> taskHandleError(), HandlerExecutor.getCurrent());

  }

  private static <VResult> CallableTask<VResult, VResult> taskHandleError() {

    return new CallableTask<VResult, VResult>() {

      @Override
      public VResult call(Task<VResult> task) throws Exception {

        try {
          return task.get();
        } catch (ExecutionException ex) {
          Exception innerEx = Task.findExceptionExcept(ex, ExecutionException.class);

          if (innerEx != null) {

            innerEx.printStackTrace();
          } else {

            ex.printStackTrace();
          }
        }

        return task.get();
      }
    };
  }

  private CallableTask<Void, Void> taskPostLoadData() {

    return new CallableTask<Void, Void>() {

      @Override
      public Void call(Task<Void> task) throws Exception {

        busyIndicator.setVisibility(View.GONE);
        expandableListView.setVisibility(View.VISIBLE);

        // for exception handling
        task.get();

        return null;
      }
    };
  }

  private CallableTask<Task<Void>, Void> taskLoadData() {

    return new CallableTask<Task<Void>, Void>() {

      @Override
      public Task<Void> call(Task<Void> task) throws Exception {

        // for exception handling
        task.get();

        Thread.sleep(2000);

        return ApplicationClient
            .getMainMenu()
            .continueWith(new CallableTask<Void, MainMenuItemGroupList>() {

          @Override
          public Void call(Task<MainMenuItemGroupList> task) throws Exception {

            listAdapter = new ExpandableListAdapter(MainActivity.this, task.get());

            expandableListView.setAdapter(listAdapter);

            return null;
          }
        }, HandlerExecutor.getCurrent());
      }
    };
  }

  private CallableTask<Void, Void> taskPreLoadData() {

    return new CallableTask<Void, Void>() {

      @Override
      public Void call(Task<Void> task) throws Exception {

        // for exception handling
        task.get();

        expandableListView.setVisibility(View.GONE);
        busyIndicator.setVisibility(View.VISIBLE);

        return null;
      }
    };
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
  }

  @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();
    if (id == R.id.action_settings) {
      return true;
    }
    return super.onOptionsItemSelected(item);
  }

}




Java Source Code List

com.task4java.IndexedList.java
com.task4java.KeyValuePair.java
com.task4java.Stopwatch.java
com.task4java.StringUtils.java
com.task4java.Tuple.java
com.task4java.android.activity.ActivityUtils.java
com.task4java.android.activity.BaseActivity.java
com.task4java.android.annotation.Annotations.java
com.task4java.android.examples.App.java
com.task4java.android.examples.activity.AboutActivity.java
com.task4java.android.examples.activity.ExpandableListAdapter.java
com.task4java.android.examples.activity.MainActivity.java
com.task4java.android.examples.activity.WelcomeActivity.java
com.task4java.android.examples.backend.AndroidServiceClient.java
com.task4java.android.util.concurrent.ActivityExecutor.java
com.task4java.android.util.concurrent.HandlerExecutor.java
com.task4java.data.backend.IServiceClient.java
com.task4java.data.backend.ServiceClient.java
com.task4java.data.backend.model.MainMenuAnnotation.java
com.task4java.data.frontend.ApplicationClient.java
com.task4java.data.frontend.model.MainMenuItemGroupList.java
com.task4java.data.frontend.model.MainMenuItemGroup.java
com.task4java.data.frontend.model.MainMenuItem.java
com.task4java.http.HttpHeaders.java
com.task4java.http.HttpMimeTypes.java
com.task4java.http.HttpRequestMethods.java
com.task4java.http.HttpStatusCodes.java
com.task4java.http.client.HttpContent.java
com.task4java.http.client.HttpStringContent.java
com.task4java.http.client.IImageClient.java
com.task4java.http.client.IRestClient.java
com.task4java.http.client.ImageClientGingerbread.java
com.task4java.http.client.ImageClient.java
com.task4java.http.client.ImageResponse.java
com.task4java.http.client.RestClientGingerbread.java
com.task4java.http.client.RestClient.java
com.task4java.http.client.RestResponse.java
com.task4java.lang.reflect.ReflectionCache.java
com.task4java.net.URLBuilder.java
com.task4java.util.concurrent.CallableTask.java
com.task4java.util.concurrent.CallableValue2.java
com.task4java.util.concurrent.CallableValue.java
com.task4java.util.concurrent.ITaskStart.java
com.task4java.util.concurrent.ITask.java
com.task4java.util.concurrent.TaskCompletionSource.java
com.task4java.util.concurrent.TaskContinuationOptions.java
com.task4java.util.concurrent.TaskException.java
com.task4java.util.concurrent.TaskFactory.java
com.task4java.util.concurrent.TaskResultException.java
com.task4java.util.concurrent.TaskStartException.java
com.task4java.util.concurrent.Task.java
com.task4java.util.log.ConsoleLogger.java
com.task4java.util.log.ILog.java
com.task4java.util.log.Logger.java