Я довольно новичок в Android Studio, поэтому извините за неопытность.
Я создал базу данных SQL, в которой каждый набор данных содержит идентификатор, имя металла и точку плавления.
Я хочу иметь возможность фильтровать базу данных и отображать только тот набор данных, у которого есть точка плавления в пределах предоставленных значений max и min.
Пользователь вводит значения max и min, используя два EditTexts.Затем нажимает кнопку, чтобы открыть отдельное действие с 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;
}
Спасибо за любую помощь.