Android Open Source - geoar-app Plugin Grid Adapter






From Project

Back to project page geoar-app.

License

The source code is released under:

Apache License

If you think the Android project geoar-app 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 2012 52North Initiative for Geospatial Open Source Software GmbH
 */*from w w  w  .  j  a  v  a 2s .c  om*/
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.n52.geoar.newdata;

import java.util.List;

import org.n52.geoar.R;

import android.content.Context;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.TextView;

public class PluginGridAdapter<T extends PluginHolder> extends BaseAdapter {

  interface OnItemCheckedListener {
    void onItemChecked(boolean newState, int position);
  }

  private class ViewHolder {
    ImageView imageView;
    TextView textViewTitle;
    CheckBox checkBox;
    OnGridCheckedChangeListener checkedListener;
    ImageTask imageTask;
    public TextView textViewSubTitle;
    public TextView textViewStatus;
  }

  private class ImageTask extends AsyncTask<Void, Void, Bitmap> {

    private ImageView imageView;
    private T plugin;

    public ImageTask(ImageView imageView, T plugin) {
      this.imageView = imageView;
      this.plugin = plugin;
    }

    @Override
    protected Bitmap doInBackground(Void... params) {
      return plugin.getPluginIcon();
    }

    @Override
    protected void onPostExecute(Bitmap result) {
      imageView.setImageBitmap(result);
    }

  }

  private boolean showCheckBox = false;

  private class OnGridCheckedChangeListener implements
      OnCheckedChangeListener {

    private int position;

    public void setPosition(int position) {
      this.position = position;
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView,
        boolean isChecked) {
      if (itemCheckedListener != null) {
        itemCheckedListener.onItemChecked(isChecked, position);
      }
    }

  }

  protected List<T> plugins;
  private LayoutInflater inflater;
  private Context mContext;

  public PluginGridAdapter(Context context) {
    mContext = context;
    inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  }

  private OnItemCheckedListener itemCheckedListener;

  public void setOnItemCheckedListener(OnItemCheckedListener listener) {
    this.itemCheckedListener = listener;
  }

  @Override
  public int getCount() {
    if (plugins != null)
      return plugins.size();
    return 0;
  }

  @Override
  public T getItem(int position) {
    if (plugins != null && position < getCount() && position >= 0)
      return plugins.get(position);
    return null;
  }

  @Override
  public long getItemId(int position) {
    return 0;
  }

  @SuppressWarnings("unchecked")
  @Override
  public View getView(int position, View view, ViewGroup parent) {
    ViewHolder viewHolder;

    if (view == null) {
      view = inflater.inflate(R.layout.cb_grid_item, parent, false);
      viewHolder = new ViewHolder();
      viewHolder.imageView = (ImageView) view
          .findViewById(R.id.imageView);
      viewHolder.textViewTitle = (TextView) view
          .findViewById(R.id.textViewTitle);
      viewHolder.textViewSubTitle = (TextView) view
          .findViewById(R.id.textViewSubTitle);
      viewHolder.textViewStatus = (TextView) view
          .findViewById(R.id.textViewStatus);
      viewHolder.checkBox = (CheckBox) view.findViewById(R.id.checkBox);
      if (showCheckBox) {
        viewHolder.checkedListener = new OnGridCheckedChangeListener();
        viewHolder.checkBox
            .setOnCheckedChangeListener(viewHolder.checkedListener);
        viewHolder.checkBox.setVisibility(View.VISIBLE);
      } else {
        viewHolder.checkBox.setVisibility(View.GONE);
      }
      view.setTag(viewHolder);
    } else {
      viewHolder = (ViewHolder) view.getTag();
    }

    if (viewHolder.checkedListener != null) {
      viewHolder.checkedListener.setPosition(position);
    }

    final T plugin = plugins.get(position);
    // load image via imageCache
    // ImageLoader.getInstance().displayImage("", viewHolder.imageView); //
    // TODO?

    if (viewHolder.imageTask != null) {
      viewHolder.imageView.setImageBitmap(null);
      viewHolder.imageTask.cancel(true);
    }
    viewHolder.imageTask = new ImageTask(viewHolder.imageView, plugin);
    viewHolder.imageTask.execute((Void) null);

    viewHolder.textViewTitle.setText(plugin.getName());
    viewHolder.textViewSubTitle
        .setText(plugin.getPublisher() != null ? plugin.getPublisher()
            : mContext.getString(R.string.unknown_publisher));
    viewHolder.textViewStatus.setText(getPluginStatus(plugin));
    viewHolder.checkBox.setChecked(getItemChecked(position));

    return view;
  }

  protected String getPluginStatus(T plugin) {
    return "";
  }

  protected boolean getItemChecked(int position) {
    return false;
  }

  public void setShowCheckBox(boolean showCheckBox) {
    this.showCheckBox = showCheckBox;
  }

}




Java Source Code List

.DataSourcesOverlay.java
.VisualizationOverlayItem.java
org.n52.geoar.AboutDialog.java
org.n52.geoar.DataSourceListAdapter.java
org.n52.geoar.GeoARActivity.java
org.n52.geoar.GeoARApplication.java
org.n52.geoar.ar.view.ARFragment.java
org.n52.geoar.ar.view.ARObject.java
org.n52.geoar.ar.view.ARView.java
org.n52.geoar.ar.view.DataSourceVisualizationHandler.java
org.n52.geoar.ar.view.IntroController.java
org.n52.geoar.ar.view.IntroViewer.java
org.n52.geoar.ar.view.gl.ARSurfaceViewRenderer.java
org.n52.geoar.ar.view.gl.ARSurfaceView.java
org.n52.geoar.ar.view.gl.GLESCamera.java
org.n52.geoar.ar.view.gl.MultisampleConfigs.java
org.n52.geoar.ar.view.gl.SurfaceTopology.java
org.n52.geoar.ar.view.overlay.ARCanvasSurfaceView.java
org.n52.geoar.ar.view.overlay.GUIDrawable.java
org.n52.geoar.ar.view.overlay.Radar.java
org.n52.geoar.exception.UnsupportedGeometryType.java
org.n52.geoar.map.view.DataSourceOverlayHandler.java
org.n52.geoar.map.view.GeoARMapView.java
org.n52.geoar.map.view.MapActivityContext.java
org.n52.geoar.map.view.MapFragment.java
org.n52.geoar.map.view.overlay.DataSourceOverlay.java
org.n52.geoar.map.view.overlay.DataSourcePointOverlay.java
org.n52.geoar.map.view.overlay.DataSourcePolygonOverlay.java
org.n52.geoar.map.view.overlay.DataSourcePolylineOverlay.java
org.n52.geoar.map.view.overlay.DataSourcesOverlay.java
org.n52.geoar.map.view.overlay.OverlayType.java
org.n52.geoar.map.view.overlay.PointOverlayType.java
org.n52.geoar.map.view.overlay.PolygonOverlayType.java
org.n52.geoar.map.view.overlay.PolylineOverlayType.java
org.n52.geoar.newdata.CheckList.java
org.n52.geoar.newdata.DataCache.java
org.n52.geoar.newdata.DataSourceHolder.java
org.n52.geoar.newdata.DataSourceInstanceHolder.java
org.n52.geoar.newdata.DataSourceInstanceSettingsDialogActivity.java
org.n52.geoar.newdata.InstalledPluginHolder.java
org.n52.geoar.newdata.PluginActivityContext.java
org.n52.geoar.newdata.PluginContext.java
org.n52.geoar.newdata.PluginDialogFragment.java
org.n52.geoar.newdata.PluginDownloadHolder.java
org.n52.geoar.newdata.PluginDownloader.java
org.n52.geoar.newdata.PluginFragment.java
org.n52.geoar.newdata.PluginGridAdapter.java
org.n52.geoar.newdata.PluginHolder.java
org.n52.geoar.newdata.PluginLoader.java
org.n52.geoar.newdata.PluginLogger.java
org.n52.geoar.newdata.PluginStateInputStream.java
org.n52.geoar.newdata.Tile.java
org.n52.geoar.settings.DateTimeSettingsViewField.java
org.n52.geoar.settings.DateUtils.java
org.n52.geoar.settings.NumberSettingsViewField.java
org.n52.geoar.settings.SettingsException.java
org.n52.geoar.settings.SettingsHelper.java
org.n52.geoar.settings.SettingsViewField.java
org.n52.geoar.settings.SettingsView.java
org.n52.geoar.settings.SpinnerSettingsViewField.java
org.n52.geoar.settings.StringSettingsViewField.java
org.n52.geoar.tracking.camera.CameraView.java
org.n52.geoar.tracking.camera.RealityCamera.java
org.n52.geoar.tracking.location.AdaptiveLowPassSensorBuffer.java
org.n52.geoar.tracking.location.LocationHandler.java
org.n52.geoar.tracking.location.LowPassSensorBuffer.java
org.n52.geoar.tracking.location.MeanSensorBuffer.java
org.n52.geoar.tracking.location.SensorBuffer.java
org.n52.geoar.view.InfoView.java
org.n52.geoar.view.geoar.CalibrationControlView.java
org.n52.geoar.view.geoar.Settings.java
org.n52.geoar.view.geoar.gl.mode.BilligerColorShader.java
org.n52.geoar.view.geoar.gl.mode.BilligerLightShader.java
org.n52.geoar.view.geoar.gl.mode.BilligerTextureShader.java
org.n52.geoar.view.geoar.gl.mode.BoundingBox.java
org.n52.geoar.view.geoar.gl.mode.FeatureShader.java
org.n52.geoar.view.geoar.gl.mode.PhongFeatureShader.java
org.n52.geoar.view.geoar.gl.mode.RenderFeature2.java
org.n52.geoar.view.geoar.gl.mode.Spatial.java
org.n52.geoar.view.geoar.gl.mode.TextureFeatureShader.java
org.n52.geoar.view.geoar.gl.mode.Texture.java
org.n52.geoar.view.geoar.gl.mode.features.CubeFeature2.java
org.n52.geoar.view.geoar.gl.mode.features.FlatCircleFeature.java
org.n52.geoar.view.geoar.gl.mode.features.HeightMapFeature.java
org.n52.geoar.view.geoar.gl.mode.features.NewGridFeature.java
org.n52.geoar.view.geoar.gl.mode.features.ReferencedGridFeature.java
org.n52.geoar.view.geoar.gl.mode.features.SphereFeature.java
org.n52.geoar.view.geoar.gl.mode.features.TriangleFeature.java