JavascriptProva

giovedì 22 marzo 2018

Salvataggio di AutoCompleteTextView con database

Ho risolto un problema che mi è risultato piuttosto difficile, ossia usare una casella autocompletante con una tabella di database.
Ne salvo il codice:

activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="4"
    tools:context="c.antonello.tavolodatabase.MainActivity">


    <AutoCompleteTextView
        android:id="@+id/autoCompleteTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text"/>


</LinearLayout> 


MainActivity:
public class MainActivity extends AppCompatActivity {

    Helper helper;

    AutoCompleteTextView completeTextView;
    SimpleCursorAdapter mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        helper=new Helper(this);
        completeTextView=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView);

        mAdapter= new SimpleCursorAdapter(this,
                android.R.layout.simple_list_item_1,
                null,
                new String[]{"nome"},
                new int[]{android.R.id.text1},
                0
        );

        mAdapter.setCursorToStringConverter(new SimpleCursorAdapter.CursorToStringConverter() {
            @Override
            public CharSequence convertToString(Cursor cursor) {
                int index=cursor.getColumnIndex("nome");
                return cursor.getString(index);
            }
        });

        mAdapter.setFilterQueryProvider(new FilterQueryProvider() {
            @Override
            public Cursor runQuery(CharSequence charSequence) {
                System.out.println(charSequence);
                return helper.querySelect(charSequence.toString());
            }
        });

        completeTextView.setAdapter(mAdapter);

        completeTextView.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View view, int i, KeyEvent keyEvent) {
                if(keyEvent.getAction()==KeyEvent.ACTION_DOWN){
                    switch(i){
                        case KeyEvent.KEYCODE_ENTER:
                            System.out.println(completeTextView.getText());
                            return true;
                        default:
                            break;
                    }
                }
                return false;
            }
        });
    }
}


helper:
public class Helper extends SQLiteOpenHelper {


    public Helper(Context context) {
        super(context, "mioDatabase.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table tabella(_id integer primary key,nome text)");

    }

    public void save(String stringa){
        SQLiteDatabase db=this.getWritableDatabase();
        ContentValues values=new ContentValues();
        values.put("nome",stringa);
        db.insert("tabella",null,values);

    }

    public Cursor query(){
        SQLiteDatabase db=this.getReadableDatabase();
        return db.rawQuery("select * from tabella",null);
    }

    public Cursor querySelect(String stringa){
        SQLiteDatabase db=this.getReadableDatabase();
        Cursor c=db.rawQuery("select * from tabella where nome like '%"+stringa+"%'",null);
        return c;

    }

    public void modifica(int id,String stringa){
        SQLiteDatabase db=this.getWritableDatabase();
        ContentValues values=new ContentValues();
        values.put("nome",stringa);
        db.update("tabella",values,"_id="+id,null);
    }

    public void cancella(int id){
        SQLiteDatabase db=this.getWritableDatabase();
        db.delete("tabella","_id="+id,null);
    }



    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

Nessun commento:

Posta un commento