我对android没有经验,我才开始学习它
问题:当我在编辑文本中键入项目的名称时,我希望它显示项目名称,成本,数量等。我不知道是否必须使用按钮,所以当我点击它,我在编辑文本中输入的项目的字段出现,或者是否有不同的方式来显示项目的字段。
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "ShoppingList.db";
public static final String TABLE_NAME = "list_table";
public static final String COL_1 = "ID";
public static final String COL_2 = "NAME";
public static final String COL_3 = "COST";
public static final String COL_4 = "QUANTITY";
public static final String COL_5 = "PURCHASED";
public static double total;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 2);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_NAME +
" (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,COST TEXT, QUANTITY INTEGER,PURCHASED TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public boolean insertData(String name, String cost, String quantity, String purchased) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_2, name);
contentValues.put(COL_3, cost);
contentValues.put(COL_4, quantity);
contentValues.put(COL_5, purchased);
long result = db.insert(TABLE_NAME, null, contentValues);
if (result == -1)
return false;
else
return true;
}
这是我的xml:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editSearch"
android:layout_gravity="center_horizontal" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/search"
android:id="@+id/button"
android:layout_gravity="center_horizontal" />
这是我的搜索类。我什么都没有,因为我不知道该怎么做
public class SearchItem extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_item);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Search List");
}
}
答案 0 :(得分:0)
这很容易。
首先在您的活动中创建DatabaseHelper类的实例,如下所示。
public class SearchItem extends AppCompatActivity {
DatabaseHelper mDbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_item);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Search List");
mDbHelper = new DatabaseHelper(SearchItem.this);
}
}
执行此创建方法类型的Cursor后,它返回DatabaseHelper类中的Cursor,以根据您所需的sql查询获取值,如下所示。
public Cursor getValues_Raw(String selectQuery) {
SQLiteDatabase db = this.getWritableDatabase();
Cursor cv = null;
try {
cv = mDatabase.rawQuery(selectQuery, null);
} catch (Exception e) {
e.printStackTrace();
} finally {
db.close();
}
return cv;
}
现在在您的活动中创建方法以使用Cursor方法获取数据,并使用您在edittext中输入的数据单击按钮调用此方法。如果您想根据名称搜索费用,请按以下方式创建方法
public void getSearchValueAccordingName(String name){
String selectQuery = "";
selectQuery = "SELECT * FROM " + DatabaseHelper.TABLE_NAME + " where "+DatabaseHelper.COL_2+ " = " +name;
Cursor cur = mDbHelper.getValues_Raw(selectQuery);
String cost = "";
try {
if (!(cur == null)) {
if (cur.getCount() > 0) {
if (cur.moveToFirst()) {
do {
cost = cur.getString(cur.getColumnIndex(DatabaseHelper.COL_3));
} while (cur.moveToNext());
}
}
cur.close();
}
} catch (Exception e) {
e.printStackTrace();
}
// You can do other thing with your got value. I am showing the toast for demo
Toast.makeText(SearchItem.this, cost, Toast.LENGTH_LONG).show();
}
从按钮的clicklistner中调用方法getSearchValueAccordingName,然后在此处获得所需的值。在Button的点击列表器中,如下所示。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = edittext.getText();
getSearchValueAccordingName(name)
}
});
最后,您的活动类如下所示。
public class SearchItem extends AppCompatActivity {
EditText editText;
Button button;
DatabaseHelper mDbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_item);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Search List");
mDbHelper = new DatabaseHelper(SearchItem.this);
editText = (EditText) findViewById(R.id.editSearch);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = editText.getText().toString();
getSearchValueAccordingName(name);
}
});
}
public void getSearchValueAccordingName(String name){
String selectQuery = "";
selectQuery = "SELECT * FROM " + DatabaseHelper.TABLE_NAME + " where "+DatabaseHelper.COL_2+ " = " +name;
Cursor cur = mDbHelper.getValues_Raw(selectQuery);
String cost = "";
try {
if (!(cur == null)) {
if (cur.getCount() > 0) {
if (cur.moveToFirst()) {
do {
cost = cur.getString(cur.getColumnIndex(DatabaseHelper.COL_3));
} while (cur.moveToNext());
}
}
cur.close();
}
} catch (Exception e) {
e.printStackTrace();
}
// You can do other thing with your got value. I am showing the toast for demo
Toast.makeText(SearchItem.this, cost, Toast.LENGTH_LONG).show();
}
}