Как сделать RadioButton фильтром SQLite в Android Studio?

Этот код фильтрует SQL-запрос по 6 фильтрам: имя, вес, страна, мощность и тип. Как сделать элемент RadioButton отдельным фильтром? У меня есть 6 элементов RadioButton. Каждый элемент для одного фильтра. RadioButton Weight для фильтрации по весу, RadioButton Country для фильтрации по стране и т. д.

MySQLite
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Locale;
import java.util.StringTokenizer;

public class MySQLite extends SQLiteOpenHelper {
    private static final int DATABASE_VERSION = 4;

    static final String DATABASE_NAME = "phones";

    static final String TABLE_NAME = "emergency_service";
    static final String ID = "id";
    static final String NAME = "name";
    static final String PRICE = "price";
    static final String TYPE = "type";
    static final String POWER = "power";
    static final String WEIGHT = "weight";
    static final String COUNTRY = "country";

    static final String ASSETS_FILE_NAME = "vacuumcleaner.txt";
    static final String DATA_SEPARATOR = "|";

    private Context context;

    public MySQLite(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_NAME + "("
                + ID + " INTEGER PRIMARY KEY,"
                + NAME + " TEXT,"
                + PRICE + " TEXT,"
                + TYPE + " TEXT,"
                + POWER + " TEXT,"
                + WEIGHT + " TEXT,"
                + COUNTRY + " TEXT" + ")";
        db.execSQL(CREATE_CONTACTS_TABLE);
        System.out.println(CREATE_CONTACTS_TABLE);
        loadDataFromAsset(context, ASSETS_FILE_NAME,  db);
    }


    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        System.out.println("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }


    public void addData(SQLiteDatabase db, String name, String price, String type, String power, String weight, String country) {
        ContentValues values = new ContentValues();
        values.put(NAME, name);
        values.put(PRICE, price);
        values.put(TYPE, type);
        values.put(POWER, power);
        values.put(WEIGHT, weight);
        values.put(COUNTRY, country);
        db.insert(TABLE_NAME, null, values);
    }


    public void loadDataFromAsset(Context context, String fileName, SQLiteDatabase db) {
        BufferedReader in = null;

        try {

            InputStream is = context.getAssets().open(fileName);

            in = new BufferedReader(new InputStreamReader(is));

            String str;
            while ((str = in.readLine()) != null) {
                String strTrim = str.trim();
                if (!strTrim.equals("")) {
                    StringTokenizer st = new StringTokenizer(strTrim, DATA_SEPARATOR);
                    String name = st.nextToken().trim();
                    String price = st.nextToken().trim();
                    String type = st.nextToken().trim();
                    String power = st.nextToken().trim();
                    String weight = st.nextToken().trim();
                    String country = st.nextToken().trim();
                    addData(db, name, price, type, power, weight, country);
                }
            }


        } catch (IOException ignored) {
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException ignored) {
                }
            }
        }

    }


    public String getData(String filter) {

        String selectQuery;

        if (filter.equals("")) {
            selectQuery = "SELECT  * FROM " + TABLE_NAME + " ORDER BY " + NAME;
        } else {
            selectQuery = "SELECT  * FROM " + TABLE_NAME + " WHERE (" + PRICE + " LIKE '%"  +
                    filter.toLowerCase() + "%'" +
                    " OR " + TYPE + " LIKE '%" + filter + "%'" + " OR " +  POWER + " LIKE '%" + filter + "%'"
                    + " OR " + WEIGHT + " LIKE '%" + filter + "%'" + " OR " + COUNTRY +
                    " LIKE '%" + filter + "%'" + " OR " + NAME + " LIKE '%" + filter + "%'" +") ORDER BY " + NAME;

        }

        System.out.println(selectQuery);
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        StringBuilder data = new StringBuilder();

        int num = 0;
        if (cursor.moveToFirst()) {
            do {
                int n = cursor.getColumnIndex(NAME);
                int t = cursor.getColumnIndex(PRICE);
                int k = cursor.getColumnIndex(TYPE);
                int s = cursor.getColumnIndex(POWER);
                int a = cursor.getColumnIndex(WEIGHT);
                int d = cursor.getColumnIndex(COUNTRY);
                String name = cursor.getString(n);
                String price = cursor.getString(t);
                String type = cursor.getString(k);
                String power = cursor.getString(s);
                String weight = cursor.getString(a);
                String country = cursor.getString(d);
                data.append(String.valueOf(++num) + ") " + name + ": " + price + ": "+ type + ": " + power + ": " + weight + ": " + country + ": " +"\n");
            } while (cursor.moveToNext());
        }
        return data.toString();
    }

}

Это был класс SQLite, вот MainActivity.java:

 MainActivity
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private final int LARGE_FONT = 16;
    private final int SMALL_FONT = 12;
    private int fontSize = SMALL_FONT;

    MySQLite db = new MySQLite(this);

    EditText editText;
    TextView textView;
    RadioGroup radioGroup;
    RadioButton priceRadioButton;
    RadioButton powerRadioButton;
    RadioButton typeRadioButton;
    RadioButton weightRadioButton;
    RadioButton countryRadioButton;
    RadioButton nameRadioButton;


    static final String FILTER = "FILTER";
    String filter = "";

    SharedPreferences sPref;
    static final String CONFIG_FILE_NAME = "Config";
    static final String FONT_SIZE = "FontSize";

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        savedInstanceState.putString(FILTER, filter);
        super.onSaveInstanceState(savedInstanceState);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        editText = findViewById(R.id.editText);
        textView = findViewById(R.id.textView);

        textView.setKeyListener(null);


        sPref = getSharedPreferences(CONFIG_FILE_NAME, MODE_PRIVATE);
        fontSize = sPref.getInt(FONT_SIZE, SMALL_FONT);

        textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, fontSize);
        textView.requestFocus();


        if (savedInstanceState != null) {
            editText.setText(savedInstanceState.getString(FILTER));
        }

        textView.setText(R.string.Загрузка_данных);


        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }

            @Override
            public void afterTextChanged(Editable s) {


                new Thread(new Runnable() {
                    public void run() {
                        filter = editText.getText().toString().trim();
                        final String data = db.getData(filter);
                        textView.post(new Runnable() {
                            public void run() {
                                textView.setText(data);
                            }
                        });
                    }
                }).start();

            }

        });


        editText.post(new Runnable() {
            public void run() {
                editText.setText(filter);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);

        menu.findItem(R.id.large_font).setChecked(fontSize == LARGE_FONT);
        return true;
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.email) {
            Intent i = new Intent(Intent.ACTION_SEND);
            i.setType("message/rfc822");
            i.putExtra(Intent.EXTRA_EMAIL, new String[]{getString(R.string.myemail)});
            i.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.Добавьте_еще_номер));
            i.putExtra(Intent.EXTRA_TEXT, getString(R.string.Предлагаю_такой_номер));
            try {
                startActivity(Intent.createChooser(i, getString(R.string.Посылка_письма)));
            } catch (android.content.ActivityNotFoundException ex) {
                Toast.makeText(MainActivity.this, R.string.Нет_установленного_почтового_клиента, Toast.LENGTH_SHORT).show();
            }
            return true;
        }

        if (id == R.id.large_font) {
            item.setChecked(!item.isChecked());
            int size = item.isChecked() ? LARGE_FONT : SMALL_FONT;
            textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
            fontSize = size;
            return true;
        }

        if (id == R.id.exit) {
            finish();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }


    @Override
    protected void onStop() {
        super.onStop();

        SharedPreferences.Editor ed = sPref.edit();
        ed.putInt(FONT_SIZE, fontSize);
        ed.apply();
    }
}

Ответы (0 шт):