Ho questo file di layout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.palestrascrollview.MainActivity" > </RelativeLayout>Devo aggiungere una ScrollView che contiene un Layout. Scelgo un LinearLayout.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.palestrascrollview.MainActivity" > <ScrollView android:id="@+id/scrollView" android:fillViewport="true" android:layout_width="400dp" android:layout_height="100dp" android:layout_alignParentTop="true" android:layout_alignParentLeft="true"> <LinearLayout android:orientation="vertical" android:id="@+id/scrollLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#afc" /> </ScrollView> </RelativeLayout>Bene: ho ottenuto un quadrato di colore verdino-azzurro (quello da me voluto), che dovrebbe comportarsi come una scrollView.
Ma vorrei aggiungervi anche altre cosette.
Una EditText e un pulsante per l'immissione.
Sono giunto a una soluzione ragionevole, usando LinearLayout, che al momento preferisco rispetto ai RelativeLayout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.palestrascrollview.MainActivity" > <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" > <ScrollView android:id="@+id/scrollView" android:layout_width="400dp" android:layout_height="150dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:fillViewport="true" > <LinearLayout android:id="@+id/scrollLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#afc" android:orientation="vertical" /> </ScrollView> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" > <EditText android:id="@+id/editText1" android:layout_marginTop="30dp" android:layout_width="400dp" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </EditText> <Button android:id="@+id/button1" android:layout_marginTop="30dp" android:layout_marginLeft="30dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout> </LinearLayout>Adesso occupiamoci del codice...
Ho creato un codice per una classe atta a generare il Database:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } class Helper extends SQLiteOpenHelper{ Context context; public Helper(Context context) { super(context, "database.db", null, 1); this.context=context; } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABELLA(TESTO TEXT)"); } public void save(String frase){ SQLiteDatabase db=this.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("TESTO", frase); db.insert("TABELLA", null, values); } public Cursor query(){ SQLiteDatabase db=this.getWritableDatabase(); Cursor crs=db.rawQuery("SELECT * FROM TABELLA", null); return crs; } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } } }Ora devo lavorare per l'immissione dei dati nel database, usando EditText e il Button.
Al momento ho trovato questo:
public class MainActivity extends Activity { EditText editText; Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Helper helper=new Helper(this); editText=(EditText)findViewById(R.id.editText1); button=(Button)findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { helper.save(editText.getText().toString()); } }); }I dati mi risultano regolarmente immessi nel database.
Ora devo pensare a un modo di visualizzarli immediatamente nella ScrollView.
Per il momento mi visualizzo la frase in LogCat per vedere che sia tutto a posto:
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { helper.save(editText.getText().toString()); frase=helper.query().getString(2); Log.d("FRASE", frase); } });Ottengo un errore IndexOutOfBound, e mi viene in mente che ho dimenticato il MoveToFirst...
public Cursor query(){ SQLiteDatabase db=this.getWritableDatabase(); Cursor crs=db.rawQuery("SELECT * FROM TABELLA", null); crs.moveToFirst(); return crs; }Un'altra correzione per l'errore del numero di colonna nel metodo getString dell'oggetto query():
@Override
public void onClick(View v) {
helper.save(editText.getText().toString());
frase=helper.query().getString(1);
Log.d("FRASE", frase);
}
e la cosa riesce!Ora voglio estrarre, però, non solo il primo record del Cursor, ma tutti:
@Override public void onClick(View v) { helper.save(editText.getText().toString()); Cursor c=helper.query(); do{ Log.d("frase", c.getString(1)); }while(c.moveToNext()); }Vediamo...
08-04 10:42:22.708: D/frase(8361): cvgfddghjjjjjjjhvvcfdsdhhjk 08-04 10:42:22.708: D/frase(8361): sddfffggg 08-04 10:42:22.708: D/frase(8361): ciao 08-04 10:42:22.708: D/frase(8361): ciccia 08-04 10:42:22.708: D/frase(8361): fgggggggggg 08-04 10:42:22.708: D/frase(8361): ciccio bello non scassare LA minchiaPerfetto!
Nessun commento:
Posta un commento