Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Veronika89
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 3
#1

Изменение данных в ListView при вводе текста

09.01.2017, 10:11. Просмотров 397. Ответов 5
Метки нет (Все метки)

Есть активность с AutoCompleteTextView и ListView. В ListView данные выводятся через свой адаптер.

Как сделать так чтобы при выполнении метода onTextChanged у AutoCompleteTextView данные в ListView менялись следующим образом: А именно чтобы в ListView оставались только те слова, которые начинаются на тот набор символов, которые вводим в AutoCompleteTextView?

Класс Slovo

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Slovo {
    long id;
    String word;
    String perevod;
    String simbol;
    boolean favorite;
 
    public Slovo(long id, String word, String perevod, String simbol, String favorite) {
        this.id = id;
        this.word = word;
        this.perevod = perevod;
        this.simbol = simbol;
        this.favorite = (favorite.equals("1"))? true:false;
    }
}
Класс-Адаптер

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
public class MySimpleCursorAdapter extends SimpleCursorAdapter {
 
    private int layout;
 
    public MySimpleCursorAdapter(Context context, int layout, Cursor cursor, String[] from, int[] to, int flag) {
        super(context, layout, cursor, from, to, flag);
        this.layout = layout;
    }
 
    public static class ViewHolder {
        public TextView txtBukva;
        public TextView txtPerevod;
        public TextView txtSlovo;
        public ImageButton btnIzbrannoe;
 
        public ViewHolder(View view) {
            txtBukva = (TextView) view.findViewById(R.id.txtBukva);
            txtSlovo = (TextView) view.findViewById(R.id.txtSlovo);
            txtPerevod = (TextView) view.findViewById(R.id.txtPerevod);
            btnIzbrannoe = (ImageButton) view.findViewById(R.id.btnIzbrannoe);
        }
    }
 
    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(layout, parent, false);
        ViewHolder viewHolder = new ViewHolder(view);
        view.setTag(viewHolder);
        return view;
    }
 
    @Override
    public void bindView(View view, Context context, Cursor cursor) {
 
        ViewHolder holder = (ViewHolder) view.getTag();
 
        String bukva = cursor.getString(cursor.getColumnIndex(Contract.Entry.COLUMN_SLOVO)).substring(0, 1).toUpperCase();
        String slovo = cursor.getString(cursor.getColumnIndex(Contract.Entry.COLUMN_SLOVO));
        String perevod = cursor.getString(cursor.getColumnIndex(Contract.Entry.COLUMN_PEREVOD));
        String izbrannoe = cursor.getString(cursor.getColumnIndex(Contract.Entry.COLUMN_IZBRANNOE));
        int _ID = cursor.getInt(cursor.getColumnIndex(Contract.Entry._ID));
 
        TextView txtBukva = (TextView) view.findViewById(R.id.txtBukva);
        TextView txtSlovo = (TextView) view.findViewById(R.id.txtSlovo);
        TextView txtPerevod = (TextView) view.findViewById(R.id.txtPerevod);
        ImageButton btnIzbrannoe = (ImageButton) view.findViewById(R.id.btnIzbrannoe);
 
        holder.txtBukva.setText(bukva);
        holder.txtSlovo.setText(slovo);
        holder.txtPerevod.setText(perevod);
        holder.btnIzbrannoe.setFocusable(false);
 
        if (izbrannoe.equals("1")) {
            holder.btnIzbrannoe.setImageResource(R.drawable.icon_star_yellow);
        } else {
            holder.btnIzbrannoe.setImageResource(R.drawable.icon_star_outline_black);
        }
 
        holder.btnIzbrannoe.setTag(new Slovo(_ID,slovo, perevod,bukva,izbrannoe));
    }
}
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
public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor> {
 
    private AutoCompleteTextView txtSearch;
    private Spinner spinner;
    private ListView list;
    private ImageButton btnClear;
 
    DBHeler db;
    private MySimpleCursorAdapter cursorAdapter;
 
    final private static int LOADER_RUS = 0;
    final private static int LOADER_ENG = 1;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        db = new DBHeler(this);
 
        try {
            db.createDataBase();
            db.openDataBase();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
 
        spinner = (Spinner) findViewById(R.id.spinner);
        txtSearch = (AutoCompleteTextView) findViewById(R.id.txtSearch);
        list = (ListView) findViewById(R.id.list);
        btnClear = (ImageButton) findViewById(R.id.btnClear);
 
        ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.types, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
 
        String[] from = new String[] {Contract.Entry.COLUMN_SLOVO, Contract.Entry.COLUMN_SLOVO, Contract.Entry.COLUMN_PEREVOD, Contract.Entry.COLUMN_IZBRANNOE};
        int[] to = new int[] {R.id.txtBukva, R.id.txtSlovo, R.id.txtPerevod, R.id.btnIzbrannoe};
 
        cursorAdapter = new MySimpleCursorAdapter(this, R.layout.item, null, from, to, 0);
 
        list.setAdapter(cursorAdapter);
 
        getSupportLoaderManager().initLoader(LOADER_RUS, null, this);
        getSupportLoaderManager().initLoader(LOADER_ENG, null, this);
 
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int loadID, long l) {
                getSupportLoaderManager().getLoader(loadID).forceLoad();
            }
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
            }
        });
    }
 
    protected void onDestroy() {
        super.onDestroy();
        db.close();
    }
 
    static class MyCursorLoader extends CursorLoader {
        Cursor cursor;
        DBHeler dbHeler;
        final int loaderID;
 
        public MyCursorLoader(Context context, DBHeler dbHeler, int id) {
            super(context);
            this.dbHeler = dbHeler;
            loaderID = id;
        }
 
        @Override
        protected Cursor onLoadInBackground() {
            switch (loaderID) {
                case LOADER_RUS:
                    String query = "SELECT * " + " FROM " + Contract.Entry.TABLE_RUEN;
                    cursor = dbHeler.database.rawQuery(query, null);
                    break;
                case LOADER_ENG:
                    String query = "SELECT * " + " FROM " + Contract.Entry.TABLE_ENRU;
                    cursor = dbHeler.database.rawQuery(query, null);
                    break;
            }
            return cursor;
        }
    }
 
    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
        return new MyCursorLoader(this, db, id);
    }
 
    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
        cursorAdapter.swapCursor(data);
    }
 
    @Override
    public void onLoaderReset(Loader<Cursor> loader) {
        cursorAdapter.swapCursor(null);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2017, 10:11
Ответы с готовыми решениями:

Изменение цвета текста в отдельной ячейке ListView
Здравствуйте! У меня такой вопрос: имеется ListView, на который также наложенo...

Изменение стиля текста в отдельно взятой ячейке ListView
Народ, подскажите, плиз, как реализовать следующее: Имеется ListView с тремя...

EditText смещается вниз при вводе текста, который занимает объём больше, чем EditText
EditText сещается вниз при вводе текста который занимает обём больше чем...

Не прокручивать ListView при добавлении в него данных
Добрый день! Подскажите пожалуйста. Делаю программу. В ней есть функционал...

Обновление данных ListView при подключении к сети WiFi Android
Написал приложение для получения курса валют с сайта РБК. Все работает кроме...

5
vxg
Модератор
3247 / 2048 / 322
Регистрация: 13.01.2012
Сообщений: 7,926
09.01.2017, 13:05 #2
Veronika89, взять и сделать. в чем сам вопрос то? при изменении текста убить старые данные и создать новые + послать уведомление списку что данные поменялись. вроде сами все это сказали.
0
Veronika89
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 3
09.01.2017, 13:17  [ТС] #3
вопрос в том что не пойму как сделать это

Добавлено через 39 секунд
ну убить допустим смогу, а новые данные как взять?
0
vxg
Модератор
3247 / 2048 / 322
Регистрация: 13.01.2012
Сообщений: 7,926
09.01.2017, 18:08 #4
Veronika89, есть исходный набор. Из него и делаем выборку получая набор-результат который отображается в листе
0
Veronika89
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 3
10.01.2017, 08:22  [ТС] #5
ну это я и сама понимаю без вас
0
vxg
Модератор
3247 / 2048 / 322
Регистрация: 13.01.2012
Сообщений: 7,926
10.01.2017, 08:40 #6
Veronika89, проблема в выборке или в отображении или везде дайте хоть подсказку)
0
10.01.2017, 08:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2017, 08:40

Listview вывод данных и переход по нажатию на другой Listview SQLite
Доброго извините за название темы, долго не мог сформировать название, В общем...

Передача данных из ListView в другой Activity в ListView
Добрый день. Пытаюсь разобраться с передачей данных с ListView, но выходит что...

Копирование данных из 1 listView во 2 listView
Нужно что бы при нажатии на один элемент в первом ListView он копировался во...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru