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