Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 20.10.2021
Сообщений: 95
1

Фильтр на RadioButton

24.11.2022, 16:57. Показов 280. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа делает поиск по пылесосами по всем столбцам, нужно сделать, чтоб при выборе какого то пункта (Столбца) искала только там. Добавил RadioGroup и RadioButton, как прописать на активацию RadioButton не могу, подскажите кому не сложно, буду очень благодарен.
Код MainActivity
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
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; // Компонент для вывода ответа
 
 
    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(); // Передача фокуса на комонент чтобы закрылось окно ввода у "editText"
 
        // Восстановление фильтра после переворота экрана
        if (savedInstanceState != null) {
            editText.setText(savedInstanceState.getString(FILTER));
        }
 
        textView.setText(R.string.Загрузка_данных);
 
        // Обработчик изменения текста в компоненте "editText"
        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();
    }
}
Так же код SQLITE
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
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"; // Поле с 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; // Переменная для SQL-запроса
 
        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); // Выполнение SQL-запроса
 
        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(); // Возвращение результата
    }
 
}
Фильтр на RadioButton
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2022, 16:57
Ответы с готовыми решениями:

Фильтр с использованием checkbox и radiobutton
Здравствуйте. Помогите плиз решить проблемы с выбором по указанным параметрам. То есть у меня...

C помощью checkBox'a или radioButton сделать фильтр вытягивания с базы данных
Можно ли с помощью checkBox'a или radioButton сделать фильтр вытягивания с базы данных, по ID? К...

Достать из имени radioButton(x) его последнюю(ие) цифры и добавить их в if (radioButton(x).Checked)
Добрый день! Предыстория: Есть программа WinForm, на ней есть 77 radioButton. Имена у них от...

если кликнули на первый radiobutton то в переменную $rb заносится значения выбраного radiobutton и выводится
как воплотить в жизнь такое: имеется 2 radiobutton;(круглые флажки) если кликнули на первый...

Radiobutton. Как сравнить выбранное значение radiobutton с исходным
Добрый день, подскажите, пожалуйста, делаю тест с элементами radiobutton, необходимо проверить...

1
0 / 0 / 0
Регистрация: 20.10.2021
Сообщений: 95
27.11.2022, 18:31  [ТС] 2
Данный код фильтрует по имени, весу, стране, силе, типу, как прописать этот код к RadioButon, чтоб при выборе "Weight" искала по "Weight". Буду благодарен, за любую помощь.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 public String getData(String filter) {
 
        String selectQuery; // Переменная для SQL-запроса
 
        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;
 
        }
0
27.11.2022, 18:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2022, 18:31
Помогаю со студенческими работами здесь

Необходимо чтобы при нажатии radiobutton выходило следующее меню с текстом и несколькими radiobutton-ами
Всем привет,помогите нужен пример кода необходимо что бы при нажатии radiobutton выходило следующее...

Как сделать чтобы после нажатия RadioButton в Label2 автоматически вносилось произведение RadioButton на Label1
Как сделать чтобы после нажатия RadioButton в Label2 автоматически вносилось произведение...

Как сделать чтобы после нажатия RadioButton в Label2 автоматически вносилось произведение RadioButton на Label1
Как сделать чтобы после нажатия RadioButton в Label2 автоматически вносилось произведение...

не записывается значение radiobutton кроме первой radiobutton
На страницу из БД выводится вопросы и четыре ответа к вопросам(radiobutton-ы). Т.е....

Как сделать чтобы после нажатия RadioButton в одном из шести Radiogroop в edit1 автоматически вносилось значение radiobutton
Как сделать чтобы после нажатия RadioButton в одном из шести Radiogroop в edit1 автоматически...

Расположение radiobutton зависит от других radiobutton
Все доброго времени суток! В общем делаю тестник. Условия тестника, которые задали - быть одним...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru