Android Open Source - advanced-tourist-map Sqlite Completion Adapter






From Project

Back to project page advanced-tourist-map.

License

The source code is released under:

GNU General Public License

If you think the Android project advanced-tourist-map 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 2010, 2011 mapsforge.org/*from ww  w  .j av a 2  s.c o m*/
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package org.mapsforge.geocoding.widget;

import java.util.List;

import org.mapsforge.geocoding.Unchecked;

import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;

public abstract class SqliteCompletionAdapter<T> extends BaseAdapter implements Filterable {

  private static final String ANDROID_LOG_TAG = "geocoding";

  private InternalFilter filter = null;
  private List<T> currentResults = null;

  public abstract String getString(T element);

  public abstract List<T> getResults(String needle);

  // setter for filter
  void setCurrentResults(List<T> results) {
    this.currentResults = results;
  }

  @Override
  public int getCount() {
    Log.d(ANDROID_LOG_TAG, "getCount");
    if (this.currentResults == null) {
      return 0;
    }
    return this.currentResults.size();
  }

  @Override
  public Object getItem(int i) {
    Log.d(ANDROID_LOG_TAG, "getItem " + i);
    if (this.currentResults == null) {
      return null;
    }
    return getString(this.currentResults.get(i));
  }

  public T getItemDataObject(int i) {
    if (this.currentResults == null) {
      return null;
    }
    return this.currentResults.get(i);
  }

  @Override
  public long getItemId(int i) {
    Log.d(ANDROID_LOG_TAG, "getItemId " + i);
    return 0;
  }

  @Override
  public View getView(int pos, View view, ViewGroup parent) {
    String name = getString(this.currentResults.get(pos));
    Log.d(ANDROID_LOG_TAG, "getView " + name);
    TextView textView = new TextView(parent.getContext());
    textView.setPadding(0, 10, 0, 10);
    textView.setText(name);
    return textView;
  }

  /*
   * Filterable interface
   */

  @Override
  public Filter getFilter() {
    Log.d(ANDROID_LOG_TAG, "getFilter");

    if (this.filter == null) {
      this.filter = new InternalFilter();
    }

    return this.filter;
  }

  class InternalFilter extends Filter {

    @Override
    protected android.widget.Filter.FilterResults performFiltering(CharSequence prefix) {
      // this gets called by a worker thread!!! take care.
      Log.d(ANDROID_LOG_TAG, "perform " + prefix);

      String needle = prefix == null ? null : prefix.toString();
      List<T> results = getResults(needle);

      FilterResults filterResults = new FilterResults();

      filterResults.values = results;
      filterResults.count = results.size();

      Log.d(ANDROID_LOG_TAG, "perform finish");
      return filterResults;
    }

    @Override
    protected void publishResults(CharSequence constraint, FilterResults filterResults) {
      Log.d(ANDROID_LOG_TAG, "publish");

      List<T> results = Unchecked.cast(filterResults.values);
      SqliteCompletionAdapter.this.setCurrentResults(results);

      if (results.size() == 0) {
        notifyDataSetInvalidated();
      } else {
        notifyDataSetChanged();
      }
    }
  }
}




Java Source Code List

org.mapsforge.geocoding.Unchecked.java
org.mapsforge.geocoding.widget.CityCompletionAdapter.java
org.mapsforge.geocoding.widget.PlaceCompletionAdapter.java
org.mapsforge.geocoding.widget.RoadCompletionAdapter.java
org.mapsforge.geocoding.widget.RoadListAdapter.java
org.mapsforge.geocoding.widget.SqliteCompletionAdapter.java
org.mapsforge.geocoding.widget.State.java
org.muxe.advancedtouristmap.AdvancedTouristMapApplication.java
org.muxe.advancedtouristmap.AdvancedTouristMap.java
org.muxe.advancedtouristmap.BaseActivity.java
org.muxe.advancedtouristmap.CacheSizePreference.java
org.muxe.advancedtouristmap.EditPreferences.java
org.muxe.advancedtouristmap.FilePickerIconAdapter.java
org.muxe.advancedtouristmap.FilePicker.java
org.muxe.advancedtouristmap.InfoView.java
org.muxe.advancedtouristmap.LocationPicker.java
org.muxe.advancedtouristmap.MoveSpeedPreference.java
org.muxe.advancedtouristmap.PositionInfo.java
org.muxe.advancedtouristmap.Search.java
org.muxe.advancedtouristmap.SeekBarPreference.java
org.muxe.advancedtouristmap.Utility.java
org.muxe.advancedtouristmap.overlay.GenericOverlayItem.java
org.muxe.advancedtouristmap.overlay.GenericOverlay.java
org.muxe.advancedtouristmap.overlay.PoiOverlayItem.java
org.muxe.advancedtouristmap.overlay.PositionOverlayItem.java
org.muxe.advancedtouristmap.overlay.WikiOverlayItem.java
org.muxe.advancedtouristmap.poi.PoiBrowserActivity.java
org.muxe.advancedtouristmap.poi.PoiOrCategory.java
org.muxe.advancedtouristmap.routing.AngleCalc.java
org.muxe.advancedtouristmap.routing.DecisionOverlay.java
org.muxe.advancedtouristmap.routing.DecisionPoint.java
org.muxe.advancedtouristmap.routing.RouteCalculator.java
org.muxe.advancedtouristmap.routing.RouteList.java
org.muxe.advancedtouristmap.routing.Route.java
org.muxe.advancedtouristmap.sourcefiles.AddressFile.java
org.muxe.advancedtouristmap.sourcefiles.FileManagerActivity.java
org.muxe.advancedtouristmap.sourcefiles.FileManager.java
org.muxe.advancedtouristmap.sourcefiles.MapBundle.java
org.muxe.advancedtouristmap.sourcefiles.MapFile.java
org.muxe.advancedtouristmap.sourcefiles.PoiFile.java
org.muxe.advancedtouristmap.sourcefiles.RoutingFile.java
org.muxe.advancedtouristmap.sourcefiles.SourceFile.java
org.muxe.advancedtouristmap.wikipedia.AbstractWikiArticle.java
org.muxe.advancedtouristmap.wikipedia.ArticleRetrieverFactory.java
org.muxe.advancedtouristmap.wikipedia.ArticleRetriever.java
org.muxe.advancedtouristmap.wikipedia.GeonamesRetriever.java
org.muxe.advancedtouristmap.wikipedia.OnlineWikiArticle.java
org.muxe.advancedtouristmap.wikipedia.WikiArticleInterface.java
org.muxe.advancedtouristmap.wikipedia.WikilocationRetriever.java