Wie zu verwenden edittext.getText().toString()
Möchte ich es so machen, dass es eine ListView
mit einem Button
oben. Der Benutzer klickt auf diese Schaltfläche, und es öffnet sich ein dialog
mit einem EditText
- und eine OK-und Abbrechen-button. Wenn der Benutzer auf OK klickt, was auch immer text eingegeben wird, in der EditText
bekommt in der SQLiteDatabase
, die sich in der ListView
.
Habe ich bereits meine SQLiteDatabase
und haben ein adapter
für die Liste zu zeigen, die SQLiteDatabase
, aber ich brauche, um herauszufinden, wie man die edittext.getText().toString()
Methode hinzufügen, um die SQLiteDatabase
. Ich brauche ein code-Beispiel.
Wenn Sie es brauchen, hier ist mein main .java:
package com.gantt.shoppinglist;
import android.app.Dialog;
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class ShoppingList extends ListActivity {
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final DataHelper dataHelper = new DataHelper(this);
ListView lv = (ListView) findViewById(android.R.id.list);
SimpleCursorAdapter adapter = null;
final SQLiteDatabase db = dataHelper.selectAll();
Cursor c = db.rawQuery("SELECT DISTINCT oid as _id,name FROM table1 ORDER BY name", null);
if (c.moveToFirst()) {
String[] columnNames = new String[]{"name"};
int[] list = new int[]{android.R.id.list};
adapter = new SimpleCursorAdapter(this, R.layout.rowlayout, c, columnNames, list);
}
lv.setAdapter(adapter);
Button button1main = (Button) findViewById(R.id.add);
button1main.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final Dialog additem = new Dialog(ShoppingList.this);
additem.setContentView(R.layout.maindialog);
final EditText et = (EditText)additem.findViewById(R.id.edittext);
additem.setTitle("Type your item");
additem.setCancelable(true);
et.setHint("Type the name of an item...");
Button button = (Button) additem.findViewById(R.id.cancel);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
additem.dismiss();
}
});
additem.show();
Button ok = (Button) additem.findViewById(R.id.ok);
ok.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
et.getText().toString();
additem.dismiss();
et.setText("");
}
});
}
});
}
}
Hier ist mein DataHelper Klasse:
package com.gantt.shoppinglist;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteStatement;
import android.util.Log;
public class DataHelper {
public static final String DATABASE_NAME = "items.db";
public static final int DATABASE_VERSION = 1;
public static final String TABLE_NAME = "table1";
public static final String KEY_ROWID = "_id";
private Context context;
private SQLiteDatabase db;
private SQLiteStatement insertStmt;
private static final String INSERT = "insert into "
+ TABLE_NAME + "(name) values (?)";
public DataHelper(Context context) {
this.context = context;
OpenHelper openHelper = new OpenHelper(this.context);
this.db = openHelper.getWritableDatabase();
this.insertStmt = this.db.compileStatement(INSERT);
}
public long insert(String name) {
this.insertStmt.bindString(1, name);
return this.insertStmt.executeInsert();
}
public void deleteAll() {
this.db.delete(TABLE_NAME, null, null);
}
public SQLiteDatabase selectAll() {
List<String> list = new ArrayList<String>();
Cursor cursor = this.db.query(TABLE_NAME, new String[] { "name" },
null, null, null, null, "name desc");
if (cursor.moveToFirst()) {
do {
list.add(cursor.getString(0));
} while (cursor.moveToNext());
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
return db;
}
public static String getDatabaseName() {
return DATABASE_NAME;
}
private static class OpenHelper extends SQLiteOpenHelper {
OpenHelper(Context context) {
super(context, getDatabaseName(), null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME + "(id INTEGER PRIMARY KEY, name TEXT");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w("Example", "Upgrading database, this will drop tables and recreate.");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
}
- Sie klebte wie mehrere hundert Zeilen code da oben. Das können Sie möglicherweise nicht alle relevant. Die Zeile(N) oberhalb benötigen Sie modifiziert/erweitert?
InformationsquelleAutor Cg2916 | 2011-02-13
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit den aktuellen Methoden, die Sie haben, und vorausgesetzt, dass Sie verstehen, den code, den Sie für den Datenbank-adapter, nur dazu:
Nachdem Sie dies getan haben, müssen Sie rufen Sie die
notifyDataSetChanged
Methode IhrerSimpleCursorAdapter
Objekt.ListView
ändert sich nicht. Vielleicht brauche ich zu sagen, dieListView
oder dieCursor
oder die DataHelper um benachrichtigt zu werden, von einer änderung?ListView
.public class ShoppingList extends ListActivity { SimpleCursorAdapter adapter = null; final SQLiteDatabase db = dataHelper.selectAll(); Cursor c = db.rawQuery("SELECT DISTINCT oid as _id,name FROM table1 ORDER BY name", null); if (c.moveToFirst()) { String[] columnNames = new String[]{"name"}; int[] list = new int[]{android.R.id.list}; adapter = new SimpleCursorAdapter(this, R.layout.rowlayout, c, columnNames, list); } lv.setAdapter(adapter);
Button ok = (Button) additem.findViewById(R.id.ok); ok.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { addItems(); } private void addItems() { String item = et.getText().toString(); dataHelper.insert(item); adapter.notifyDataSetChanged(); additem.dismiss(); et.setText(""); }
Einem einfachen Beispiel-Methode für Ihre DataHelper Klasse: