views:

63

answers:

1

Hi

I use autocompletetextview with SimpleCursorAdapter to get data from sqlite. I'd like to get its drop down list started by the entered key. In my autocompletetextview, the list is not shown or filtered by input text.

eg, If user enter "an", all text started with "an" will be seen in this list.

In Java

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.new);

        txtPNo = (AutoCompleteTextView) findViewById(R.id.txtSTo);        

        mDbHelper = new DBAdapter(this);
        mDbHelper.open();

        SimpleCursorAdapter notes = fillToData();
        txtPNo.setAdapter(notes); 
}

    private SimpleCursorAdapter fillToData() {
        Cursor c = mDbHelper.getName();
        startManagingCursor(c);
        String[] from = new String[] {DBAdapter.Name,DBAdapter.No1};
        int[] to = new int[] {R.id.txtName,R.id.txtNo1};

        Log.d(TAG, "cursor.getCount()=" + c.getCount());
        SimpleCursorAdapter notes =
            new SimpleCursorAdapter(this, R.layout.autocomplete, c, from,
to);

        return notes;
    } 

In new.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="#ffffff"
    >
   <AutoCompleteTextView android:id="@+id/txtSTo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:textColor="#000000"     
        android:hint="To"       
        android:completionThreshold="1" 
        android:selectAllOnFocus="true"  
        android:layout_alignParentTop = "true"
        android:layout_alignParentLeft="true"/>       
</RelativeLayout>

In autocomplete.xml

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:stretchColumns="0" android:padding="5dp"> 
    <TableRow android:padding="5dp">
        <LinearLayout android:orientation="vertical">
            <TextView android:id="@+id/txtName"
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:textColor="#000000"   
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/> 
            <TextView android:id="@+id/txtNo1"
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:textColor="#000000"   
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/> 
        </LinearLayout>
    </TableRow>
</TableLayout>

How to implement to get just filtered list?

A: 
    txtPNo = (AutoCompleteTextView) findViewById(R.id.txtSTo);        

    mDbHelper = new DBAdapter(this);
    mDbHelper.open();

    SimpleCursorAdapter notes = fillToData();
    txtPhoneNo.setAdapter(notes); 

Umm, if you just copy-n-pasted your code...

The issue is the variable name.

txtPNo != txtPhoneNo


AutoCompleteTextView

Brian
Hi Brian, I edited my post with coding. Thank you
sorry. txtPNo.setAdapter(notes);
okay, i think your problem is that you haven't setup SimpleCursorAdapter Correctly. If you look at http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html it says you need to set a Filter. Also look at: http://developer.android.com/reference/android/widget/CursorAdapter.html#runQueryOnBackgroundThread(java.lang.CharSequence)
Brian