Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
disx
20 / 20 / 0
Регистрация: 26.02.2014
Сообщений: 521
Записей в блоге: 1
#1

Как привязать к выбранным пунктам Spiner разные ListView? - Программирование Android

08.01.2015, 20:02. Просмотров 536. Ответов 18
Метки нет (Все метки)

Как привязать к выбранным пунктам Spiner разные ListView? т.е. не могу понять каким способом...

В одном активити нужно по выбору пункта в спинере отобразить разные ListView...

Помогите пожалуйста?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2015, 20:02     Как привязать к выбранным пунктам Spiner разные ListView?
Посмотрите здесь:

Spiner как проверить выбранный пункт - Программирование Android
Здравствуйте, у меня есть Spiner со списком, выбранный элемент задаю TextView-у но не как не получается сравнить выбранный элемент с...

Утечка памяти в Spiner - Программирование Android
Здравствуйте. Создал новый проект в Layout добавил выпадающий список в ресурсы добавил массив значений списка, нового кода 0. Значения...

Передача значения из SPiner - Программирование Android
В диалоге происходит выбор названия таблицы в Spiner списке. По нажатию кнопки OK это значени должно присвоитсья переменной из другого...

Получение значения из spiner - Программирование Android
Как можно получить значение из спайнера? То есть сначала выбираем элементы в спайнере потом по нажатию ок в диалоге это значение передаётся...

Как привязать приложение к ВК? - Программирование Android
Помогите пожалуйста,мне нужно что-бы приложение делало пост автоматически. Скиньте весь код если не трудно.

Как привязать Location к Button - Программирование Android
Всем привет! Не получается привязать свое место положение к Button. Помогите решить проблему,спасибо. public void...

Как привязать item к определенной Activity? - Программирование Android
Здравствуйте!Имеется список категорий (items) в ListView.Как по нажатию на item под названием Cat1 открывалась ActivityCat1 и так далее? ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
disx
20 / 20 / 0
Регистрация: 26.02.2014
Сообщений: 521
Записей в блоге: 1
29.01.2015, 09:40  [ТС]     Как привязать к выбранным пунктам Spiner разные ListView? #2
выбираем в Spinner selectedItemPosition - "№1", "№2" и т.д., как отобразить в этом же активити разные ListView в зависимости от выбранного,.... подскажите в какую сторону глядеть?

P/S/ есть идея написать методы для каждого ListView в котором реализовать его создание, но как это сделать и как его запускать слабо представляю, подскажите кто в курсе?
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 836
29.01.2015, 10:21     Как привязать к выбранным пунктам Spiner разные ListView? #3
disx, как мне кажется Вам будет достаточно в разметке одного spinner'a и одного ListView.
Выбираем item в spinner'e, получаем соответствующий набор данных(коллекцию как вариант), скармливаем его adapter'у.
Единственное что если наборы данных будут существенно отличатся друг от друга. Тогда необходимо либо переопределить adapter, либо в зависимости от выбранного набора данных устанавливать в ListView соответствующую разметку.
Цитата Сообщение от disx Посмотреть сообщение
P/S/ есть идея написать методы для каждого ListView в котором реализовать его создание, но как это сделать и как его запускать слабо представляю, подскажите кто в курсе?
Вы имеете ввиду переопределить adapter?
disx
20 / 20 / 0
Регистрация: 26.02.2014
Сообщений: 521
Записей в блоге: 1
29.01.2015, 10:34  [ТС]     Как привязать к выбранным пунктам Spiner разные ListView? #4
androbro, если правильно понимаю да, т.е. написать для каждого Листа свой адаптер, и по выбору пункта вешать на листвью нужный адаптер,...

да, и как обновлять данные выбираемых списков в одном активити?
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 836
29.01.2015, 11:52     Как привязать к выбранным пунктам Spiner разные ListView? #5
disx, у Вас информация сильно отличается в зависимости от выбранного пункта spinner'a?
Цитата Сообщение от disx Посмотреть сообщение
да, и как обновлять данные выбираемых списков в одном активити?
удаляете adpater, вешаете новый.
disx
20 / 20 / 0
Регистрация: 26.02.2014
Сообщений: 521
Записей в блоге: 1
29.01.2015, 12:56  [ТС]     Как привязать к выбранным пунктам Spiner разные ListView? #6
androbro,
у Вас информация сильно отличается в зависимости от выбранного пункта spinner'a?
нет, только текстом.
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 836
29.01.2015, 13:38     Как привязать к выбранным пунктам Spiner разные ListView? #7
disx, ну если вообще все идентично ничего переопределять и удалять не нужно.
Коллекцию(которая связана с адаптером) заполняйте информацией соответствующей выбранному элементу и вызываете у него
Java
1
adapter.notifyDataSetChanged()
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 131
02.02.2015, 19:47     Как привязать к выбранным пунктам Spiner разные ListView? #8
Все верно. Вам хватит 1 spinner и 1 listView. Если у вас одинаковая разметка лейаута listView, просто заполняйте его данными по клику на каждый пункт в спиннере.
disx
20 / 20 / 0
Регистрация: 26.02.2014
Сообщений: 521
Записей в блоге: 1
09.02.2015, 23:32  [ТС]     Как привязать к выбранным пунктам Spiner разные ListView? #9
androbro,
удаляете adpater, вешаете новый.
Сори, как повесить понятно, а удалить adapter как?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
10.02.2015, 08:02     Как привязать к выбранным пунктам Spiner разные ListView? #10
Не надо ничего удалять, заполняете адаптер новыми данными и notifyDataSetChanged().
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
10.02.2015, 09:15     Как привязать к выбранным пунктам Spiner разные ListView? #11
Rube, оговорился похоже.
Заполняете источник данных для адаптера новыми данными.

Не получается?
Где код?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
10.02.2015, 10:50     Как привязать к выбранным пунктам Spiner разные ListView? #12
Вот код
ActivityMain
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    /********************** Spinner (дни недели) *************************/
    final Spinner spinner = (Spinner)findViewById(R.id.spinner_drawer_day);     
 
    /********************** Установки Spinner ***************************/
    final String[] days = getResources().getStringArray(R.array.days); // дни недели            
    CustomAdapterSpinner adapter = new CustomAdapterSpinner(this, days);        
    spinner.setAdapter(adapter);    
 
    /********************** Слушаем Spinner ***************************/
    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {              
            Log.d("", days[i]); // выбранный в spinner день недели          
        }                   
        public void onNothingSelected(AdapterView<?> adapterView) {  }
    }); 
}

CustomAdapterSpinner
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
public class CustomAdapterSpinner extends ArrayAdapter<String> {
    private final String[] values;
 
    public CustomAdapterSpinner(Context context, String[] values) {
        super(context, R.layout.spinner_dropdown_item, values);
        this.values = values;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return newView(position, convertView, parent, R.layout.spinner);
    }
 
    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        return newView(position, convertView, parent,
                R.layout.spinner_dropdown_item);
    }
 
    private View newView(int position, View convertView, ViewGroup parent,
            int layout) {
        View view = convertView;
        LayoutInflater inflater = (LayoutInflater) getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(layout, parent, false);
        TextView textView = (TextView) convertView.findViewById(R.id.day);
        textView.setText(values[position]);
        return view;
    }
}
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
10.02.2015, 10:55     Как привязать к выбранным пунктам Spiner разные ListView? #13
Цитата Сообщение от Armagedo Посмотреть сообщение
Не получается?
Где код?
Это было адресованно не вам.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
10.02.2015, 11:06     Как привязать к выбранным пунктам Spiner разные ListView? #14
Пускай ТС пользуется
disx
20 / 20 / 0
Регистрация: 26.02.2014
Сообщений: 521
Записей в блоге: 1
10.02.2015, 15:57  [ТС]     Как привязать к выбранным пунктам Spiner разные ListView? #15
Rube, Armagedo, Здорова парни!

это я тут интересного пропустил ?!

короче вчера как-то так наковырял:
Java
1
2
3
4
5
6
7
public void onItemSelected(AdapterView<?> parent,
                    View itemSelected, int selectedItemPosition, long selectedId) {
                if ( Predmet[selectedItemPosition] == "Русский") {
                    Rus();
}
return;
                }
метод так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Rus(){
    //получаем курсор
    cursor = db.getAllData2();//курсор второй таблицы
    startManagingCursor(cursor);
    // формируем столбцы сопоставления
    String[] from = new String[] { DB.COLUMN_IMG2, DB.COLUMN_TXT2 };
    int[] to = new int[] { R.id.ivImg, R.id.tvText };
    @SuppressWarnings("deprecation")
    SimpleCursorAdapter adapterR = new SimpleCursorAdapter(this, R.layout.item, cursor, from, to);
    lvData2=(ListView)findViewById(R.id.lvData);
    lvData2.setAdapter(adapterR);
adapterR.notifyDataSetChanged();
 
    cursor.requery();
}
и все работает(по выбору в спинере листает листы, ну заполняет данными из разных таблиц), только прошу уважаемые, окинуть взглядом на предмет "ровности кода" может покрасивше можно, или мож что лишнее?

Rube'вский пример обязательно разберу, просто пока в Кастомных адаптерах не совсем врубаюсь, а че за
ТС
кстати?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
11.02.2015, 08:03     Как привязать к выбранным пунктам Spiner разные ListView? #16
ТС топикстартер, он же аскер, он же создавший тему.

Добавлено через 4 минуты
Цитата Сообщение от disx Посмотреть сообщение
просто пока в Кастомных адаптерах не совсем врубаюсь
Там ничего сложного, зато можно картинки-иконки вставлять, я тоже недавно их не понимал.

Добавлено через 5 минут
Цитата Сообщение от disx Посмотреть сообщение
окинуть взглядом
Я бы сделал так,
Java
1
2
3
4
5
//вместо
if ( Predmet[selectedItemPosition] == "Русский")
    Rus();
// сразу бы передавал аргумент и ставил плюс парням
Rus(Predmet[selectedItemPosition]);
А в методе получал бы данные в зависимости от выбранного итема в спиннере
Java
1
2
3
void Rus(arg) {
    //тут тоже ставим плюс парням
    cursor = db.getAllData2(arg);//курсор второй таблицы
disx
20 / 20 / 0
Регистрация: 26.02.2014
Сообщений: 521
Записей в блоге: 1
11.02.2015, 13:12  [ТС]     Как привязать к выбранным пунктам Spiner разные ListView? #17
Rube,
ТС топикстартер, он же аскер, он же создавший тему.
ну я и темный
Java
1
2
// за мной не "заржавеет"
Rus(Predmet[selectedItemPosition]);
т.е. if не надо? просто метод в onItemSelected вставить?

А в методе получал бы данные в зависимости от выбранного итема в спиннере
Не догнал что у нас arg, если это:
Java
1
2
3
id_predm=selectedItemPosition;
                
                arg=getString(id_predm)//это строка 63;
, то оно того сыпется, либерально высказывая
at com.cribactivity.DB_Activity$1.onItemSelected(DB_Activity.java:63)
подскажите че, чтоб додушить вопрос, пожалуйста?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
11.02.2015, 15:30     Как привязать к выбранным пунктам Spiner разные ListView? #18
Я имел ввиду, что если при нажатии на любой итем спиннера всегда должны меняться данные на экране, то проверять ифы смысла нет.
arg это и есть/равен Predmet[selectedItemPosition], т.е. типа аргумент, можете хоть как назвать
немножко я описался, надо так void Rus(String arg)

А это зачем так, вообще не понял, да и из цифры получать строку зачем
Java
1
2
id_predm=selectedItemPosition;                
arg=getString(id_predm)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2015, 16:15     Как привязать к выбранным пунктам Spiner разные ListView?
Еще ссылки по теме:

Как перевернуть ListView? - Программирование Android
Здравствуйте! Подскажите, пожалуйста, как перевернуть ListView. Чтобы новые элементы, которые добавляются динамически, добавлялись вверх...

Как реализовать поиск по Listview? - Программирование Android
Listview adapter public class ListViewAdapter extends BaseAdapter { TextView theme; TextView contacts; TextView...

Как вставить резделители в ListView? - Программирование Android
Имеется ListView, допустим список фамилий, как вставить разделители между алфавитными группами списка? -----А----- Алексеев Андреев ...

Как использовать RadioButton в ListView? - Программирование Android
Хочу использовать свой ListView с расположены на нем тремя TextView и RadioButton, для выбора пользователем одного пункта. Заполняем...

Как присвоить обработчик ListView? - Программирование Android
как присвоить обработчик для listView проблема в том что при наследовании от activity а не от listActivity перестает работать этот код ...


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

Или воспользуйтесь поиском по форуму:
disx
20 / 20 / 0
Регистрация: 26.02.2014
Сообщений: 521
Записей в блоге: 1
11.02.2015, 16:15  [ТС]     Как привязать к выбранным пунктам Spiner разные ListView? #19
Rube, короче, получилось так:

в onItemSelected:
Java
1
2
arg = Predmet[selectedItemPosition];
                Rus(arg);
в void Rus (String arg) так:
Java
1
2
3
4
5
if (arg == "Русский") {
.....}
if (arg == "Математика") {
...}
.....
и все работает меняются списки, Спасибо.

P/S/ а если я Вашу мысль так и не понял, ну тада пример в личку плиз, А ТЕМУ МОЖНО ЗАКРЫВАТЬ!
Yandex
Объявления
11.02.2015, 16:15     Как привязать к выбранным пунктам Spiner разные ListView?
Ответ Создать тему
Опции темы

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