SQLITE LISTVIEW FILTER USING EDITEXT
<p>Please i really need help with listview filter.because I've seen many tutorials but it doesn't work.and i really tired of this
just i need the EdiText filter</p>

<p>my project contain four classes:</p>

<p>1-LocationActivity (l'activity prencipale)</p>

<pre><code>public class LocationActivity extends Activity implements LocationListener{

    public final static String LOCATION_ID = "location_id";

    private long location_id;
    private EditText name;
    private EditText comment;

    private RatingBar ratevalue;

    private EditText latitude;
    private EditText longitude;
    private TextView current_latitude;
    private TextView current_longitude;
    private TextView current_source;
    private TextView current_accuracy;
    private LocationDatabase db;
    private BestLocationProxy best_location_proxy;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        db = new LocationDatabase(this);
        best_location_proxy = new BestLocationProxy(this);

        if (savedInstanceState != null) {
            location_id = savedInstanceState.getLong(LOCATION_ID);
        }

        Intent intent = getIntent();
        location_id = intent.getLongExtra(LOCATION_ID, -1);

        setContentView(R.layout.location);
        name = (EditText) findViewById(R.id.name);

        comment = (EditText) findViewById(R.id.comment);
        ratevalue = (RatingBar) findViewById(R.id.ratingbar);
        latitude = (EditText) findViewById(R.id.latitude);
        longitude = (EditText) findViewById(R.id.longitude);
        current_latitude = (TextView) findViewById(R.id.current_latitude);
        current_longitude = (TextView) findViewById(R.id.current_longitude);
        current_source = (TextView) findViewById(R.id.current_source);
        current_accuracy = (TextView) findViewById(R.id.current_accuracy);

        updateLocation(best_location_proxy.getLastKnownLocation());

        Button set_location = (Button) findViewById(R.id.set_location);

        set_location.setOnClickListener(new OnClickListener(){

            public void onClick(View arg0) {
                Location l = best_location_proxy.getLastKnownLocation();
                if (l == null) {
                    return;
                }
                latitude.setText(Double.toString(l.getLatitude()));
                longitude.setText(Double.toString(l.getLongitude()));
            }
        });

        Button closeButton = (Button) findViewById(R.id.close_location_window);
        closeButton.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                finish();
            }
        });

        if (location_id != -1) {
            Cursor c = db.getLocation(location_id);
            if (c.getCount() != 1) {
                finish();
                return;
            }
            c.moveToFirst();
            int name_id = c.getColumnIndex(LocationDatabase.FIELD_LOCATIONS_NAME);
            int comment_id = c.getColumnIndex(LocationDatabase.FIELD_LOCATIONS_COMM);
            int ratevalue_id = c.getColumnIndex(LocationDatabase.FIELD_LOCATIONS_RATE);
            int latitude_id = c.getColumnIndex(LocationDatabase.FIELD_LOCATIONS_LATITUDE);
            int longitude_id = c.getColumnIndex(LocationDatabase.FIELD_LOCATIONS_LONGITUDE);

            name.setText(c.getString(name_id));

            comment.setText(c.getString(comment_id));
            ratevalue.setRating(c.getLong(ratevalue_id));
            latitude.setText(Double.toString(c.getDouble(latitude_id)));
            longitude.setText(Double.toString(c.getDouble(longitude_id)));
            c.close();
        }

    }


    @Override
    protected void onResume() {
        super.onResume();
        best_location_proxy.requestLocationUpdates(100000, 0, this);
    }


    @Override
    protected void onPause() {
        super.onPause();
        best_location_proxy.removeUpdates(this);

        String s_name = name.getText().toString();
        if (s_name.equals("")) {
            return;
        }

        String s_comment = comment.getText().toString();
        if (s_comment.equals("")) {
            return;
        }
        Double d_ratevalue = (double) ratevalue.getRating();

        Double d_latitude = null;
        String s_latitude = latitude.getText().toString();
        if (!s_latitude.equals("")) {
            d_latitude = Double.parseDouble(s_latitude);
        }

        Double d_longitude = null;
        String s_longitude = longitude.getText().toString();
        if (!s_longitude.equals("")) {
            d_longitude = Double.parseDouble(s_longitude);
        }

        if (location_id != -1) {
            db.updateLocation(location_id, s_name,  s_comment, d_ratevalue, d_latitude, d_longitude);
        } else {

            location_id = db.createLocation(s_name, s_comment, d_ratevalue, d_latitude, d_longitude);
        }
    }


    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putLong(LOCATION_ID, location_id);
    }

    private void updateLocation(Location l){

        if (l == null){
            current_source.setText(R.string.no_provider);
            current_latitude.setText(R.string.unavailable);
            current_longitude.setText(R.string.unavailable);
            current_accuracy.setText(R.string.unavailable);
            return;
        }

        String source;
        if (l.getProvider().equals(LocationManager.GPS_PROVIDER)){
            source = getString(R.string.location_map);
        } else if (l.getProvider().equals(LocationManager.NETWORK_PROVIDER)){
            source = getString(R.string.cell);
        } else {
            source = getString(R.string.unknown);
        }

        current_source.setText(source);
        current_latitude.setText(Double.toString(l.getLatitude()));
        current_longitude.setText(Double.toString(l.getLongitude()));
        current_accuracy.setText(Float.toString(l.getAccuracy()));
    }


    public void onLocationChanged(Location location) {
        updateLocation(location);
    }


    public void onProviderDisabled(String provider) {
    }


    public void onProviderEnabled(String provider) {    
    }


    public void onStatusChanged(String provider, int status, Bundle extras) {
    }

}
</code></pre>

<p>2-LocationListActivity (listview activity)</p>

<pre><code>public class LocationListActivity extends ListActivity {

    private Cursor locations;
    private LocationDatabase db;

    private final static String RADAR_ACTION = "com.google.android.radar.SHOW_RADAR";


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        db = new LocationDatabase(this);

        setContentView(R.layout.list);
        registerForContextMenu(this.getListView());
        getListView().setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView&lt;?&gt; parent, View view,
                    int position, long id) {
                Cursor c = (Cursor) parent.getAdapter().getItem(position);

                int name_id = c.getColumnIndex(LocationDatabase.FIELD_LOCATIONS_NAME);
                int latitude_id = c
                        .getColumnIndex(LocationDatabase.FIELD_LOCATIONS_LATITUDE);
                int longitude_id = c
                        .getColumnIndex(LocationDatabase.FIELD_LOCATIONS_LONGITUDE);
                String name = c.getString(name_id);
                float latitude = c.getFloat(latitude_id);
                float longitude = c.getFloat(longitude_id);

                startBest(latitude, longitude, name);
            }
        });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);

        MenuItem add = menu.add(R.string.location_add);
        add.setIcon(android.R.drawable.ic_menu_add);
        add.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            public boolean onMenuItemClick(MenuItem item) {
                Intent i = new Intent();
                i.setClass(LocationListActivity.this, LocationActivity.class);
                startActivity(i);
                return true;
            }
        });

        return true;
    }


    @Override
    protected void onResume() {
        super.onResume();
        updateList();
    }


    @Override
    protected void onStop() {
        super.onStop();
        if (locations != null){
            locations.close();
        }
    }


    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
        Cursor c = (Cursor) getListView().getItemAtPosition(info.position);

        int id_id = c.getColumnIndex(LocationDatabase.FIELD_LOCATIONS_ID);
        int name_id = c.getColumnIndex(LocationDatabase.FIELD_LOCATIONS_NAME);
        int latitude_id = c.getColumnIndex(LocationDatabase.FIELD_LOCATIONS_LATITUDE);
        int longitude_id = c.getColumnIndex(LocationDatabase.FIELD_LOCATIONS_LONGITUDE);

        final long id = c.getLong(id_id);
        final String name = c.getString(name_id);
        final float latitude = c.getFloat(latitude_id);
        final float longitude = c.getFloat(longitude_id);

        menu.setHeaderTitle(name);

        MenuItem map = menu.add(R.string.location_map);
        map.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            public boolean onMenuItemClick(MenuItem item) {
                startMap(latitude, longitude, name);
                return true;
            }
        });

        MenuItem edit = menu.add(R.string.location_edit);
        edit.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            public boolean onMenuItemClick(MenuItem item) {
                Intent i = new Intent();
                i.setClass(LocationListActivity.this, LocationActivity.class);
                i.putExtra(LocationActivity.LOCATION_ID, id);
                startActivity(i);
                return true;
            }
        });

        MenuItem delete = menu.add(R.string.location_delete);
        delete.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            public boolean onMenuItemClick(MenuItem item) {
                db.deleteLocation(id);
                updateList();
                return true;
            }
        });
    }

    private void updateList() {

        if (locations != null) {
            locations.close();
        }

        locations = db.getAllLocations();
        ListAdapter adapter = new SimpleCursorAdapter(this,
                android.R.layout.simple_list_item_1, locations,
                new String[] { LocationDatabase.FIELD_LOCATIONS_NAME, },
                new int[] { android.R.id.text1 });
        setListAdapter(adapter);
    }

    private void startRadar(float latitude, float longitude){
        Intent i = new Intent(RADAR_ACTION);
        i.putExtra("latitude", latitude);
        i.putExtra("longitude", longitude);
        startActivity(i);
    }

    private void startMap(float latitude, float longitude, String name){
        Formatter f = new Formatter(Locale.US);
        f.format("geo:0,0?q=%1$.5f,%2$.5f(%3$s)", latitude, longitude, name);
        Uri uri = Uri.parse(f.toString());
        Intent i = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(i);
    }

    private void startBest(float latitude, float longitude, String name){
        if (isRadarAvailable()){
            startRadar(latitude, longitude);
        } else {
            startMap(latitude, longitude, name);
        }
    }

    private boolean isRadarAvailable(){
        return isIntentAvailable(RADAR_ACTION);
    }

    private boolean isIntentAvailable(String action) {
        PackageManager packageManager = getPackageManager();
        final Intent intent = new Intent(action);
        @SuppressWarnings("rawtypes")
        List list =
                packageManager.queryIntentActivities(intent,
                        PackageManager.MATCH_DEFAULT_ONLY);
        return list.size() &gt; 0;
    }
}
</code></pre>

<p>3-LocationDataase (database activity sqlite)</p>

<pre><code>public class LocationDatabase extends SQLiteOpenHelper {

    public final static String TAG = LocationDatabase.class.toString();

    public final static String DB_NAME = "locations";
    public final static int DB_VERSION = 1;

    public final static String TABLE_LOCATIONS = "locations";

    public final static String FIELD_LOCATIONS_ID = "_id";
    public final static String FIELD_LOCATIONS_NAME = "name";
    public final static String FIELD_LOCATIONS_COMM = "comment";
    public final static String FIELD_LOCATIONS_RATE = "ratevalue";
    public final static String FIELD_LOCATIONS_LATITUDE = "latitude";
    public final static String FIELD_LOCATIONS_LONGITUDE = "longitude";

    public final static String[] PROJECTION_LOCATIONS = { FIELD_LOCATIONS_ID,
            FIELD_LOCATIONS_NAME, FIELD_LOCATIONS_COMM, FIELD_LOCATIONS_RATE, FIELD_LOCATIONS_LATITUDE,
            FIELD_LOCATIONS_LONGITUDE };

    public LocationDatabase(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
        getWritableDatabase(); // make upgrades work
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + TABLE_LOCATIONS + " ( " + 
                FIELD_LOCATIONS_ID + " INTEGER PRIMARY KEY NOT NULL, " + 
                FIELD_LOCATIONS_NAME + " Text, " +

                FIELD_LOCATIONS_COMM + " Text, " +
                FIELD_LOCATIONS_RATE + " REAL, " +
                FIELD_LOCATIONS_LATITUDE + " REAL, "
                + FIELD_LOCATIONS_LONGITUDE + " REAL )");
    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
    }

    public long createLocation(String name, String comment, Double ratevalue, Double latitude, Double longitude) {
        Log.d(TAG, "Inserting location " + name + comment + ratevalue);
        SQLiteDatabase db = getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(FIELD_LOCATIONS_NAME, name);

        values.put(FIELD_LOCATIONS_COMM, comment);
        values.put(FIELD_LOCATIONS_RATE, ratevalue);
        values.put(FIELD_LOCATIONS_LATITUDE, latitude);
        values.put(FIELD_LOCATIONS_LONGITUDE, longitude);

        long id = db.insert(TABLE_LOCATIONS, null, values);
        Log.d(TAG, Long.toString(id));
        db.close();
        return id;
    }

    public void updateLocation(Long location_id, String name, String comment, Double ratevalue, Double latitude,
            Double longitude) {
        Log.d(TAG, "Updating location");
        SQLiteDatabase db = getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(FIELD_LOCATIONS_NAME, name);

        values.put(FIELD_LOCATIONS_COMM, comment);
        values.put(FIELD_LOCATIONS_RATE, ratevalue);
        values.put(FIELD_LOCATIONS_LATITUDE, latitude);
        values.put(FIELD_LOCATIONS_LONGITUDE, longitude);

        db.update(TABLE_LOCATIONS, values, "_id = ?",
                new String[] { location_id.toString() });
        db.close();
    }

    public Cursor getAllLocations() {
        Log.d(TAG, "Selecting all locations");
        SQLiteDatabase db = getReadableDatabase();
        Cursor c = db.query(TABLE_LOCATIONS, PROJECTION_LOCATIONS, null, null,
                null, null, FIELD_LOCATIONS_NAME);
        Log.d(TAG, Integer.toString(c.getCount()));
        db.close();
        return c;
    }

    public Cursor getLocation(long location_id) {
        Log.d(TAG, "Selecting location " + Long.toString(location_id));
        SQLiteDatabase db = getReadableDatabase();
        Cursor c = db.query(TABLE_LOCATIONS, PROJECTION_LOCATIONS, "_id = ?",
                new String[] { Long.toString(location_id) }, null, null, null);
        Log.d(TAG, Integer.toString(c.getCount()));
        db.close();
        return c;
    }

    public void deleteLocation(long location_id){
        Log.d(TAG, "Deleting location " + Long.toString(location_id));
        SQLiteDatabase db = getWritableDatabase();
        db.delete(TABLE_LOCATIONS, "_id = ?", new String[] {Long.toString(location_id)});
    }
}
</code></pre>

<p>4-BestLocationProxy</p>

<p>in the Layout I have location.xml and list.xml</p>

<p>1-location.xml</p>

<pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"&gt;

    &lt;LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="311dp"
        android:orientation="vertical"
        android:paddingRight="20dip" &gt;

        &lt;TableLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"&gt;

                &lt;TextView
                    android:text="@string/name"
                    android:gravity="left|center_vertical"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:paddingRight="10dip" /&gt;
                &lt;EditText
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:editable="true"

                    android:id="@+id/name"
                    android:singleLine="true"
                    android:layout_weight="1" /&gt;


                                &lt;TextView
                    android:text="@string/comment"
                    android:gravity="left|center_vertical"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:paddingRight="10dip" /&gt;
                &lt;EditText
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:editable="true"

                    android:id="@+id/comment"
                    android:singleLine="true"
                    android:layout_weight="1" /&gt;

                &lt;TextView
                    android:text="@string/Rate"
                    android:gravity="left|center_vertical"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:paddingRight="10dip" /&gt;
&lt;/TableLayout&gt;

                &lt;RatingBar
                    android:id="@+id/ratingbar"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" 
                    android:stepSize="1"
                    /&gt;

            &lt;TableLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                &gt;
                &lt;TextView
                    android:text="@string/latitude"
                    android:gravity="left|center_vertical"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:paddingRight="10dip" /&gt;
                &lt;EditText
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:editable="true"

                    android:id="@+id/latitude"
                    android:singleLine="true"
                    android:layout_weight="1"
                    android:numeric="signed|decimal" /&gt;


                &lt;TextView
                    android:text="@string/longitude"
                    android:gravity="left|center_vertical"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:paddingRight="10dip" /&gt;
                &lt;EditText
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:editable="true"

                    android:id="@+id/longitude"
                    android:singleLine="true"
                    android:layout_weight="1"
                    android:numeric="signed|decimal" /&gt;

        &lt;/TableLayout&gt;
        &lt;TableLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"&gt;
        &lt;TableRow&gt;
        &lt;TextView 
            android:text="@string/source" 
            android:gravity="right|center_vertical" 
            android:textAppearance="?android:attr/textAppearanceMedium" 
            android:paddingRight="10dip" /&gt; 
        &lt;TextView android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:id="@+id/current_source" 
            android:layout_weight="1" 
            android:textAppearance="?android:attr/textAppearanceSmall" /&gt; 
  &lt;/TableRow&gt;


            &lt;TableRow&gt;
                &lt;TextView
                    android:text="@string/latitude"
                    android:gravity="right|center_vertical"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:paddingRight="10dip" /&gt;
                &lt;TextView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/current_latitude"
                    android:layout_weight="1"
                    android:textAppearance="?android:attr/textAppearanceSmall" /&gt;
            &lt;/TableRow&gt;
            &lt;TableRow&gt;
                &lt;TextView
                    android:text="@string/longitude"
                    android:gravity="right|center_vertical"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:paddingRight="10dip" /&gt;
                &lt;TextView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/current_longitude"
                    android:layout_weight="1"
                    android:textAppearance="?android:attr/textAppearanceSmall" /&gt;
            &lt;/TableRow&gt;
            &lt;TableRow&gt;
                &lt;TextView
                    android:text="@string/accuracy"
                    android:gravity="right|center_vertical"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:paddingRight="10dip" /&gt;
                &lt;TextView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/current_accuracy"
                    android:layout_weight="1"
                    android:textAppearance="?android:attr/textAppearanceSmall" /&gt;
            &lt;/TableRow&gt;
        &lt;/TableLayout&gt;

        &lt;View
            android:layout_width="fill_parent"
            android:background="@android:drawable/divider_horizontal_bright"
            android:layout_marginBottom="10dip"
            android:layout_marginTop="10dip"
            android:layout_height="4dip" /&gt;

        &lt;Button
            android:id="@+id/set_location"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/set_location" /&gt;

        &lt;Button
            android:id="@+id/close_location_window"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/close" /&gt;

    &lt;/LinearLayout&gt;
&lt;/ScrollView&gt;
</code></pre>

<p>2- list.xml</p>

<pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;


&lt;LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"&gt;
    &lt;ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:longClickable="true"
        android:layout_weight="1" /&gt;
    &lt;ScrollView
        android:id="@android:id/empty"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fillViewport="true"&gt;
        &lt;TextView
            android:id="@+id/emptyText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/empty_msg"
            android:textSize="20sp"
            android:textColor="?android:attr/textColorSecondary"
            android:paddingLeft="10dip"
            android:paddingRight="10dip"
            android:paddingTop="10dip"
            android:lineSpacingMultiplier="0.92" /&gt;
    &lt;/ScrollView&gt;
&lt;/LinearLayout&gt;
</code></pre>

<p>Sorry...too Long</p>
