我对Android Studio很新,请原谅我缺乏经验。
我创建了一个SQL数据库,每个数据集包含一个id,金属名称和熔点。
我希望能够过滤数据库,只显示熔点在最大值和最小值范围内的数据集。
用户使用两个EditTexts键入max和min。然后单击按钮以使用数据库填充的ListView打开单独的活动。
到目前为止我写的代码什么也没做,并且在没有过滤的情况下打印相同的原始数据库。
过滤活动(如果未设置最大值和最小值,则分别设置10000和0):
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!TextUtils.isEmpty(mpMaxInput.getText()) && !TextUtils.isEmpty(mpMinInput.getText())){
double maxMP = Double.parseDouble(mpMaxInput.getText().toString());
double minMP = Double.parseDouble(mpMinInput.getText().toString());
myDB.filterData(maxMP,minMP);
startActivity(mas);
}
else if(TextUtils.isEmpty(mpMaxInput.getText()) && !TextUtils.isEmpty(mpMinInput.getText())){
double maxMP = 10000;
double minMP = Double.parseDouble(mpMinInput.getText().toString());
myDB.filterData(maxMP,minMP);
startActivity(mas);
}
else if(!TextUtils.isEmpty(mpMaxInput.getText()) && TextUtils.isEmpty(mpMinInput.getText())){
double maxMP = Double.parseDouble(mpMaxInput.getText().toString());
double minMP = 0;
myDB.filterData(maxMP,minMP);
startActivity(mas);
}
else if(TextUtils.isEmpty(mpMaxInput.getText()) && TextUtils.isEmpty(mpMinInput.getText())){
double maxMP = 10000;
double minMP = 0;
myDB.filterData(maxMP,minMP);
startActivity(mas);
}
}
});
DisplayListView活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mas);
overridePendingTransition(R.anim.activity_back_in, R.anim.activity_back_out);
Intent intent = getIntent();
openDB();
populateListView();
}@Override
protected void onDestroy(){
super.onDestroy();
closeDB();
}
private void openDB(){
myDB = new DBHandler(this);
myDB.open();
}
private void closeDB(){
myDB.close();
}
private void populateListView(){
Cursor cursor = myDB.getAllRows();
String[] fromFieldNames = new String[]{DBHandler.ALLOY_NAME, DBHandler.MELTING_POINT};
int[] toViewIDs = new int[]{R.id.textView48, R.id.textView49};
SimpleCursorAdapter myCursorAdaptor;
myCursorAdaptor = new SimpleCursorAdapter(getBaseContext(), R.layout.item_layout, cursor, fromFieldNames,toViewIDs,0);
ListView list = findViewById(R.id.listView);
list.setAdapter(myCursorAdaptor);
}
将对DBAdapter:
public Cursor filterData(double max, double min){
String query;
query = "SELECT * FROM '" + DBHandler.TABLE_ALLOY_DETAILS + "' WHERE '" + MELTING_POINT + "' BETWEEN '" + min + "' AND '" + max + "' ";
Cursor c = db.rawQuery(query, null);
if(c!= null){
c.moveToFirst();
}
return c;
}
感谢您的帮助。