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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
SherlockH
0 / 0 / 0
Регистрация: 29.08.2013
Сообщений: 32
#1

Из ListView на новую Activity - Программирование Android

29.09.2013, 21:32. Просмотров 1802. Ответов 6
Метки нет (Все метки)

Доброго времени суток!
Я делал приложение в котором из "главного меню" осуществляется переход на новую Activity. В том Activity используется ListView, который отображает 50 строк с названиями городов.
Так вот, нужно было чтобы по нажатию на название определённого города выводилось новое Activity с информацией уникальной для каждого города, но опять же в ListView.
Ниже представлен мой Activity для осуществления перехода к информации о городе. Но переход не производиться. Словно не обрабатывается нажатие на пункт списка.
Помогите, пожалуйста! Может в коде что-то не так реализовано.
P.S.: В программировании под Android я новичок. Да, и Java освоена лишь "поверхностно". Не судите строго.
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
package ru.project.testinfomats;
 
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
 
public class ListCitiesAndDistrictsOfRT extends ListActivity {
    String[] List = new String[] {
            "Агрыз", "Азнакаево", "Аксубаево", "Актаныш", "Альметьевск", "Апастово", "Арск", "Бавлы",
            "Базарные Матаки", "Балтаси", "Богатые Сабы", "Болгар", "Большая Атня", "Большие Кайбицы",
            "Бугульма", "Верхний Услон", "Высокая Гора", "Джалиль", "Елабуга", "Заинск", "Зеленодольск",
            "Казань (Авиастроительный район)", "Казань (Вахитовский район)", "Казань (Кировский район)",
            "Казань (Московский район)", "Казань (Ново-Савиновский район)", "Казань (Приволжский район)",
            "Казань (Советский район)", "Камские Поляны", "Камское Устье", "Кукмор", "Лаишево", "Лениногорск",
            "Мамадыш", "Менделеевск", "Мензелинск", "Муслюмово", "Набережные Моркваши", "Набережные Челны",
            "Нижнекамск", "Новошешминск", "Нурлат", "Пестрецы", "Рыбная Слобода", "Старое Дрожжаное", "Тетюши",
            "Тюлячи", "Уруссу", "Черемшан", "Чистополь"
    }; 
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_cities_and_districts_layout);
        
        setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, List));
    }
    
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
        switch (Integer.parseInt(arg1.getTag().toString())) {
            case 0:
                Intent agryz = new Intent(ListCitiesAndDistrictsOfRT.this, Agryz.class);
                startActivity(agryz);
            case 1:
                Intent aznakaevo = new Intent(ListCitiesAndDistrictsOfRT.this, Aznakaevo.class);
                startActivity(aznakaevo);
        }        
    };
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2013, 21:32     Из ListView на новую Activity
Посмотрите здесь:
Android Переход на новую activity
Android Переход с элемента listView на activity
Android Как динамически заполнять ListView из другой activity?
Передать данные из диалога ListView родительскому Activity Android
Android Восстановление позиции ListView по возвращении из другого Activity
Передать данные при клике на listview в другое activity Android
Android Как вместо названия Activity подставить элемент ListView?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lavan
51 / 51 / 1
Регистрация: 21.03.2009
Сообщений: 371
29.09.2013, 22:13     Из ListView на новую Activity #2
вы забыли зарегистрировать listener
Java
1
2
3
ListView lv;
...
lv.setOnItemClickListener(obj);
и в самом листенере
Java
1
2
3
4
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
        switch (position) {
        }        
    };
SherlockH
0 / 0 / 0
Регистрация: 29.08.2013
Сообщений: 32
30.09.2013, 15:33  [ТС]     Из ListView на новую Activity #3
Простите, за глупый вопрос: но куда нужно прописать =>
Java
1
lv.setOnItemClickListener(obj);
ratcatcher
10 / 10 / 0
Регистрация: 14.09.2013
Сообщений: 17
30.09.2013, 16:08     Из ListView на новую Activity #4
Если ваша активность - подкласс ListActivity, следует переопределять метод onListItemClick:
(вот, взял из исходников ListActivity):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
/**
     * This method will be called when an item in the list is selected.
     * Subclasses should override. Subclasses can call
     * getListView().getItemAtPosition(position) if they need to access the
     * data associated with the selected item.
     *
     * @param l The ListView where the click happened
     * @param v The view that was clicked within the ListView
     * @param position The position of the view in the list
     * @param id The row id of the item that was clicked
     */
    protected void onListItemClick(ListView l, View v, int position, long id) {
    }
Кроме того, как я понял, вы собираетесь для вывода информации о каждом городе создать свой класс активности - зачем? Такую программу очень сложно расширять в дальнейшем, у вас будет 50 почти одинаковых классов активностей. Лучше создать один класс - какую-нибудь CityInfoActivity, и передавать ей название города через Intent.putExtra("CITY_NAME", cityName).
Например, так:
Java
1
2
3
4
5
6
7
@Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        String cityName = getListView().getItemAtPosition(position).toString();
        Intent showInfo = new (ListCitiesAndDistrictsOfRT.this, CityInfoActivity.class);
        showInfo.putExtra("CITY_NAME", cityName);
        startActivity(showInfo);
    }
SherlockH
0 / 0 / 0
Регистрация: 29.08.2013
Сообщений: 32
30.09.2013, 17:25  [ТС]     Из ListView на новую Activity #5
Можно подробнее...
Что, где и как реализовать?

Добавлено через 30 минут
Всем спасибо!
Всё заработало... Хотя код будет написан не в лучших традициях, как упоминал ratcatcher. Но всё будет работать!!! Спасибо вам!
P.S.: Там не хватало:
Java
1
break;
Acondbly
Сообщений: n/a
22.10.2014, 11:05     Из ListView на новую Activity #6
Можете помочь как у вас заработало?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2014, 20:41     Из ListView на новую Activity
Еще ссылки по теме:
Вызвать из ListView новое Activity (где задействован SimpleAdapter) Android
Переход на новое activity с элемента listView, заполненного через SimpleCursorAdapter Android
Можно ли обработать два ListView в пределах одного activity на android? Android
Android При нажатии на элемент ListView вывести новое Activity с информацией об этом элементе
Activity Android

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

Или воспользуйтесь поиском по форуму:
SherlockH
0 / 0 / 0
Регистрация: 29.08.2013
Сообщений: 32
22.10.2014, 20:41  [ТС]     Из ListView на новую Activity #7
В теле "case" был нужен break:
Java
1
2
3
4
5
case 1:
* * * * * * * * Intent aznakaevo = new Intent(ListCitiesAndDistrictsOfRT.this, Aznakaevo.class);
* * * * * * * * startActivity(aznakaevo);
                [B]break;[/B]
* * * * }
Пусть на "костылях", но работает! =)
Yandex
Объявления
22.10.2014, 20:41     Из ListView на новую Activity
Ответ Создать тему
Опции темы

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