Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с AsyncTask, Не срабатывает метод AsyncTask 
:(
    Опции темы
KorPaEv
Дата 12.11.2014, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 19.9.2011

Репутация: нет
Всего: нет



Доброго времени суток!
Я подключаюсь к БД MySql используя JDBC и далее пытаюсь вывести мой ответ в ListView.
В общем помогите разобраться!
Докапался вот до чего и возникло еще больше вопросов.

1 - Почему, если в OnCreate() у меня написан вызов метода Connect() и после него я уже начинаю определять адаптер и заполнение ListView то метод вообще не отрабатывает?? я поставил точку останова внутри AsyncTask и отладчик туда вообще не заходит если написано вот так

Код OnCreate()

Код

@Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        lv = (ListView) findViewById(R.id.listView);
 
//Вот тут сразу пытается перейти на  adapter = .... минуя  Connect(); ПОЧЕМУ??
        Connect();
        adapter = new ArrayAdapter<String>(this, R.layout.main, list);
        lv.setAdapter(adapter);
    }


2 - Почему если закоментарить эти строки выше у меня отладчик попадает в Connect() и отрабатывает doInBackground, но при этом вообще никак не заходит в onPostExecute()???? Как передать в этот метод мой заполненный лист и потом передать в адаптер OnCreate()???

код Connect() и AsyncTask

Код

public void Connect() {
        ConnectMySql task = new ConnectMySql();
        task.execute();
    }

private class ConnectMySql extends AsyncTask<Void, Void, List<String>> {
 
        @Override
        protected List<String> doInBackground(Void... urls)
        {
            list = new ArrayList<String>();
            try
            {
                Class.forName("com.mysql.jdbc.Driver");
                Connection con = DriverManager.getConnection(url, user, pass);
                String result = "Database connection success\n";
                Statement st = con.createStatement();
                String query = "SELECT * FROM ap_users";
                //query = query +"'" +variable+"'";
                ResultSet rs = st.executeQuery(query);
 
                while (rs.next()) {  //retrieve data
                    String data = rs.getString("username");
                    list.add(data);
                }
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
            return list;
        }
        public void onPostExecute(List<String> result)
        {
            adapter.addAll(result);
            adapter.notifyDataSetChanged();
        }
    }


Опять же когда закоменчены строки как написал выше то отладчик хотя бы вызывает Connect() но при этом не срабатывает PostExec

Код

//adapter = new ArrayAdapter<String>(this, R.layout.main, list);
 //lv.setAdapter(adapter);


Это сообщение отредактировал(а) KorPaEv - 12.11.2014, 09:15
PM MAIL   Вверх
Dapo
Дата 14.11.2014, 04:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: 1
Всего: 1



Да все везде заходит. Что говорит лог? 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0903 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.