如何使用范围过滤SQL数据库并将其显示在ListView

时间:2018-05-29 18:58:54

标签: android sql database android-studio listview

我对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;
}

感谢您的帮助。

0 个答案:

没有答案