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

Как привязать item к определенной Activity?

09.11.2014, 19:17. Показов 1342. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!Имеется список категорий (items) в ListView.Как по нажатию на item под названием Cat1 открывалась ActivityCat1 и так далее?
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
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        Category category_data[] = new Category[]
                {
                        new Category(R.drawable.cat1, "Cat1"),
                        new Category(R.drawable.cat2, "Cat2"),
                        new Category(R.drawable.cat3, "Cat3"),
                        new Category(R.drawable.cat4, "Cat4"),
                        new Category(R.drawable.cat5, "Cat5"),
                        new Category(R.drawable.cat6, "Cat6"),
                        new Category(R.drawable.cat7, "Cat7"),
                        new Category(R.drawable.cat8, "Cat8"),
                };
 
        CategoryAdapter adapter = new CategoryAdapter(this,
                R.layout.listview_item_row, category_data);
 
        listView1 = (ListView)findViewById(R.id.listView1);
 
        View header = (View)getLayoutInflater().inflate(R.layout.listview_header_row, null);
        listView1.addHeaderView(header);
 
        listView1.setAdapter(adapter);
 
        }
P.S. Где-то наткнулся на такой код...сделал так,но тут идет переход со всех item'ов в одну и ту же активити.
Java
1
2
3
4
5
6
7
listView1.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            public void onItemClick(AdapterView<?> a, View v, int position, long id)
            {
                Intent intent=new Intent ( MainActivity.this , Cat1.class );
                startActivity(intent);
            }
        });
Кто может объяснить,как работает это строка?
Java
1
 public void onItemClick(AdapterView<?> a, View v, int position, long id)
Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2014, 19:17
Ответы с готовыми решениями:

Как привязать button к определенной клавише клавиатуры
Никак не могу сообразить как привязать button к определенной клавише клавиатуры, есть исходный код...

Как привязать плавающие контейнеры к определенной части фона?
Как привязать плавающие контейнеры к определенной части фона? А то при изменении маштаба фон и...

TabControl: как определить и привязать действие к определенной вкладке
Здравствуйте! Подскажите, как например определить и привязать действие к определенной вкладке,...

Как к определённой вкладке TabControl привязать Edit/RichEdit?
Работаю в Visual Studio 2010. Создаю TabControl с одной вкладкой, на вкладку пытаюсь поместить...

7
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
09.11.2014, 19:47 2
1) google со словами start activity by name
2) в классе Category не строку передавать а Cat1.class и так далее, и хранить атм его, а при клике, брать из массива категорий категорию и брать из неё параметр этот


А Вы уверены что Вам нужны разные активити?
Там разный код? Нельзя объединить водно с параметром?
0
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
09.11.2014, 20:06  [ТС] 3
DrobyshevAlex, Просто есть список категорий...и у каждого пункта этого списка есть своя Activity.Т.е по нажатию на Cat1 должна открыться Cat1Activity,а не Cat3Activity например.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
09.11.2014, 20:18 4
Ну это понятно.
Только не вижу ответа на вопрос, по поводу можно ил сделать общее активити? Обычно при смене категории меняется только контент, а основной код один.

А если вы хотите именно так, разные активити, то я дал вам два варианта решения
Могу ещё добавить.
3) создайте карту имя => Class
и при выборе итема, выбирайте из карты по имени, её класс, но улчше всё таки 2 вариант, хранить в объекте категории Класс активити.
new Category(R.drawable.cat1, Cat1Activity.class),

У вас же есть position - говорящий какой итем кликнули, значит легко из адаптера достать объект Категории и прочесть его парамтер

4) можно просто брать порядковый номер, и в case запускать нужный активити, ну или в гугле посмотреть как я писал в пункте 1 как запустить активити из строки.
1
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
09.11.2014, 20:28  [ТС] 5
DrobyshevAlex, сделал,как вы сказали через position.Все работает...спасибо.
Java
1
2
3
4
5
6
7
8
9
listView1.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            public void onItemClick(AdapterView<?> a, View v, int position, long id)
            {
                if(position == 1)      {
                Intent intent=new Intent ( MainActivity.this , Cat1.class );
                startActivity(intent);
              }
            }
        });
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
09.11.2014, 20:30 6
Ну я правда немного не то имел ввиду
если прописывать такое условие для всех пунктов, это дублирование кода большое
0
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
09.11.2014, 20:32  [ТС] 7
DrobyshevAlex, ну я пока еще учусь Приложенька для себя А дублирование кода это очень плохо?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
09.11.2014, 20:49 8
Для того и придуманы функции что бы не было дублирования.

Ну класс Category вы сами описали?

В него добавьте просто параметр
Java
1
private Class mActivityClass;
и передавайте его в констррукторе
Java
1
2
3
4
public Category(...... , Class activityClass) {
    ...
    mActivityClass = activityClass;
}
Java
1
new Category(R.drawable.cat1, "Cat1", Cat1Activity.class),
сделайте в классе гетер
Java
1
2
3
public Class getActivityClass() {
    return mActivityClass;
}
и тащите его как то так навреное
Java
1
2
3
4
5
6
7
8
9
        listView1.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            public void onItemClick(AdapterView<?> a, View v, int position, long id)
            {
                Category cat = (Category)a.getAdapter().getItem(position);
                Intent intent=new Intent ( MainActivity.this , cat.getActivityClass());
                startActivity(intent);
              }
            }
        });
и тогда у вас на все категории будут только эти 3 строки для запуска активити
1
09.11.2014, 20:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2014, 20:49
Помогаю со студенческими работами здесь

Как привязать php-код только для определенной категории статей?
Здравствуйте! У меня есть готовая php-страница для определенной категории статей. Возник тут же...

Как привязать конкретный combobox компонента к определённой ячейке таблицы Excel?
Имеется 4 Combobox'а. В каждом из них имеется определённый список, который можно выбрать...

Где посмотреть пакеты Activity для определенной версии андроида?
Нужно открыть активити контактов через приложение !! делаю это так: public void...

Привязать label к определенной точке на странице
Суть задачи такова. На странице имеется картинка, расположенная по центру экрана col-md-6 col-sm-4...


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

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