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

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

Войти
Регистрация
Восстановить пароль
 
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
#1

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

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

Здравствуйте!Имеется список категорий (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)
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2014, 19:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как привязать item к определенной Activity? (Программирование Android):

Где посмотреть пакеты Activity для определенной версии андроида? - Программирование Android
Нужно открыть активити контактов через приложение !! делаю это так: public void openContactList(View v) { Intent...

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

Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity - Программирование Android
У меня в параллельном потоке происходит куча apply() Решение использовать apply вместо commit было принято из-за скорости. Но...

Изменение layout-элементов одного activity из другого activity - Программирование Android
Здравствуйте! Я хочу изменить размер или цвет текста TextView в одном activity из второго activity, каким образом мне можно это...

Android - Передача данных с одного Activity на другое Activity - Программирование Android
Здравствуйте , возникла необходимость получения числовых (int и float ну или double) данных в одном Activity , а обработка и вывод...

Из одного Activity получить значение другого Activity - Программирование Android
Запускаю активити: public class MainActivity extends Activity { ... ... Intent intent = new Intent(getBaseContext(),...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DrobyshevAlex
1169 / 1119 / 16
Регистрация: 31.05.2012
Сообщений: 3,059
09.11.2014, 19:47 #2
1) google со словами start activity by name
2) в классе Category не строку передавать а Cat1.class и так далее, и хранить атм его, а при клике, брать из массива категорий категорию и брать из неё параметр этот


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

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

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

4) можно просто брать порядковый номер, и в case запускать нужный активити, ну или в гугле посмотреть как я писал в пункте 1 как запустить активити из строки.
Kroshandowski
2 / 2 / 0
Регистрация: 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);
              }
            }
        });
DrobyshevAlex
1169 / 1119 / 16
Регистрация: 31.05.2012
Сообщений: 3,059
09.11.2014, 20:30 #6
Ну я правда немного не то имел ввиду
если прописывать такое условие для всех пунктов, это дублирование кода большое
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
09.11.2014, 20:32  [ТС] #7
DrobyshevAlex, ну я пока еще учусь Приложенька для себя А дублирование кода это очень плохо?
DrobyshevAlex
1169 / 1119 / 16
Регистрация: 31.05.2012
Сообщений: 3,059
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 строки для запуска активити
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2014, 20:49
Привет! Вот еще темы с ответами:

Вызвать из одной activity функцию другой activity - Программирование Android
вызвать из одного activity функцию другой activity Подскажите, можно ли такое реализовать? Допустим у меня есть основная активити и...

Из одной Activity запустить функцию другой Activity - Программирование Android
например есть Activity2 которое я показываю в Dialog окошке, там у меня находятся Date and Time Picker ы (Дата - начало, Дата - окончание)...

Создание Activity в другом Activity - Программирование Android
Нормально ли создавать экземпляр какого-либо Activity в текущем Activity? Дело в том, что код, нужный для работы с данными находится в...

Как удалить activity? - Программирование Android
мне нужно при запуске второго активити(т есть когда его видно) что бы первое уничтожалось но только не завершалась программа ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.11.2014, 20:49
Ответ Создать тему
Опции темы

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