Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
serikus
1 / 1 / 0
Регистрация: 02.02.2014
Сообщений: 40
#1

Android MySQL в листвью - Программирование Android

31.12.2014, 00:54. Просмотров 914. Ответов 9
Метки нет (Все метки)

Добрый день. Рылся по инету но не нашёл рабочего аналога. Те что скачал (2шт) не заработали после моей доработки)

Цель проста - есть база данных MySQL, надо из неё выдернуть несколько колонок и отобразить записи в ЛистВью.. Так как я не специализируюсь на Android, пишу на C#, то поймал большие трудности.

Так как писать на Android не буду, то и язык учу чисто по надобности в гугле.

Для профи это дело на 5 минут.. Либо может есть у кого исходники? Сможет кто помочь с таким приложением? Надо отобразить грядущие события Могу предоставить скачанные исходники для переделки под мою базу (у меня постоянно вылетает эксепшн)

Никаких наворотов.

Приложение загружается, и сразу список из базы данных. SQL запрос работающий в C# есть:

Кликните здесь для просмотра всего текста
C#
1
string QueryLIF = "select N,id,subject,date from "+Form1.Strings.db+"."+Form1.Strings.tbU+"where date < '" + dtnow + "';";
//Пояснение: "select * from db.tbl where date < '31.12.2014';"


В SQL так же подходит date(d-m-Y)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2014, 00:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Android MySQL в листвью (Программирование Android):

Массивы и ЛистВью - Программирование Android
Люди добрые подскажите, плиз, как избавиться от ошибки. Имеется файл, в котором в следующем виде записаны данные: Витя&amp;Коля&amp;Саша&amp;Паша ...

Интересный ЛистВью - Программирование Android
Есть такая задачка. Где-то в интерфейсе расположен ListView из 100 элементов, нужно, чтобы он одновременно отображал не более 10 элементов,...

При скролинге листвью, картинки пропадают - Программирование Android
День добрый. Использую свой кастом адаптер для листвью(см. приложение). При скролинге листвью, картинки пропадают(те которые ушли за...

MySQL и Android - Программирование Android
У меня есть сервер phpmyadmin, я хочу подключиться к нему с Android ввожу все правильно, но Android мне пишет: access failed for user 'мой...

Android+php+MySQL - Программирование Android
Я с помощью php-скрипта получаю данные код &quot;приема&quot; такой JSONObject json = jParser.makeHttpRequest(url_all_students, &quot;GET&quot;,...

MySQL + Android (Eclipse) - Программирование Android
Доброго дня всем. Прощу сразу не кидать в меня камни. Честно в программировании на Android я еще даже не новичок. Итак, вопрос пока...

9
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
31.12.2014, 10:08 #2
Напишешь скрипт, который на стороне сервера будет отдавать данные выборки в удобном тебе формате.
В Андроиде сделаешь запрос к серверу, запустив этот скрипт.
В ответ получишь то, что ты там отдаешь (XML, JSON...)
Распарсишь это дело.
Данные поместишь в листвью.
Делов на 4:38:759 мин:сек:мсек
0
serikus
1 / 1 / 0
Регистрация: 02.02.2014
Сообщений: 40
31.12.2014, 21:44  [ТС] #3
Дык, запрос есть, php файл есть, данные выдает. А обработчик никак не выходит он выдает ошибку. Буду дома, скину проект
0
serikus
1 / 1 / 0
Регистрация: 02.02.2014
Сообщений: 40
01.01.2015, 00:38  [ТС] #4
Эта штука работает с лог/пассом, мне он не нужен, по этому я в запросе их и не использовал, пускай пост шлёт в пустую, мне не жалко

Вот мой PHP, он туда выводит инфо. Но когда у меня открывается в честно скачанных исходниках listView - он пустой Моя не понимать. Вроде везде как стринги прописал..

http://pufnet.make-art.lv/pufapp/phpauth.php
0
Вложения
Тип файла: zip copy3.143d.zip (2.18 Мб, 2 просмотров)
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
01.01.2015, 13:07 #5
serikus

MainActivity
Результирующие действия думаю лучше делать в onPostExecute

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
class RequestTask extends AsyncTask<String, String, String> {
 
        @Override
        protected String doInBackground(String... params) {
 
            try {
                //создаем запрос на сервер
                DefaultHttpClient hc = new DefaultHttpClient();
                ResponseHandler<String> res = new BasicResponseHandler();
                //он у нас будет посылать post запрос
                HttpPost postMethod = new HttpPost(params[0]);
                //будем передавать два параметра
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                //передаем параметры из наших текстбоксов
                //лоигн
                nameValuePairs.add(new BasicNameValuePair("login", login.getText().toString()));
                //пароль
                nameValuePairs.add(new BasicNameValuePair("pass", pass.getText().toString()));
                //собераем их вместе и посылаем на сервер
                postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                //получаем ответ от сервера
                String response = hc.execute(postMethod, res);
                            
                
                return response;
                
                
            } catch (Exception e) {
                System.out.println("Exp=" + e);
            }
            return null;
        }
 
        @Override
        protected void onPostExecute(String result) {
 
            dialog.dismiss();
            //посылаем на вторую активность полученные параметры
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            intent.putExtra(SecondActivity.JsonURL, result);
            startActivity(intent);
            
        }
 
        @Override
        protected void onPreExecute() {
 
            dialog = new ProgressDialog(MainActivity.this);
            dialog.setMessage("Загружаюсь...");
            dialog.setIndeterminate(true);
            dialog.setCancelable(true);
            dialog.show();
            super.onPreExecute();
        }
    }
}
SecondActivity
Ты в цикле для каждого элемента создаешь адаптер, цепляешь его к листвью...Зачем?
Вынеси за цикл
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
public void JSONURL(String result) {
 
        try {
            //создали читателя json объектов и отдали ему строку - result
            JSONObject json = new JSONObject(result);
            //дальше находим вход в наш json им является ключевое слово data
            JSONArray urls = json.getJSONArray("data");
            //проходим циклом по всем нашим параметрам
            for (int i = 0; i < urls.length(); i++) {
                HashMap<String, Object> hm;
                hm = new HashMap<String, Object>();
                //читаем что в себе хранит параметр firstname
                hm.put(FIRST, urls.getJSONObject(i).getString("firstName").toString());
                //читаем что в себе хранит параметр lastname
                hm.put(LAST, urls.getJSONObject(i).getString("lastName").toString());
                myBooks.add(hm);
                
                
            }
            //дальше добавляем полученные параметры в наш адаптер
            SimpleAdapter adapter = new SimpleAdapter(SecondActivity.this, myBooks, R.layout.list,
                    new String[] { FIRST, LAST, }, new int[] { R.id.text1, R.id.text2 });
            //выводим в листвбю
            listView.setAdapter(adapter);
            listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        } catch (JSONException e) {
            Log.e("log_tag", "Error parsing data " + e.toString());
        }
    }
0
serikus
1 / 1 / 0
Регистрация: 02.02.2014
Сообщений: 40
01.01.2015, 14:27  [ТС] #6
Опачки, вот это поворот событий! Оказывается мои изменения в коде, который я скачал в инете, не сохранились.((

Добавлено через 6 минут
java:

MainActivity
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package my.home.page;
 
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
 
import org.apache.http.NameValuePair;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
 
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
 
public class MainActivity extends Activity {
 
    public EditText login;
    public EditText pass;
    private ProgressDialog dialog;
    private InputStream is;
    SecondActivity url;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btn = (Button) findViewById(R.id.button1);
        login = (EditText) findViewById(R.id.editText1);
        pass = (EditText) findViewById(R.id.editText2);
        btn.setOnClickListener(new OnClickListener() {
 
            @Override
            public void onClick(View v) {
                //тут указываем куда будем конектится, для примера я привел удаленных хост если у вас не получилось освоить wamp (:
                new RequestTask().execute("http://pufnet.make-art.lv/pufapp/phpauth.php");
            }
        });
    }
 
    class RequestTask extends AsyncTask<String, String, String> {
 
        @Override
        protected String doInBackground(String... params) {
 
            try {
                //создаем запрос на сервер
                DefaultHttpClient hc = new DefaultHttpClient();
                ResponseHandler<String> res = new BasicResponseHandler();
                //он у нас будет посылать post запрос
                HttpPost postMethod = new HttpPost(params[0]);
                //будем передавать два параметра
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                //передаем параметры из наших текстбоксов
                //лоигн
                nameValuePairs.add(new BasicNameValuePair("login", login.getText().toString()));
                //пароль
                nameValuePairs.add(new BasicNameValuePair("pass", pass.getText().toString()));
                //собераем их вместе и посылаем на сервер
                postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                //получаем ответ от сервера
                String response = hc.execute(postMethod, res);
                //посылаем на вторую активность полученные параметры
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                intent.putExtra(SecondActivity.JsonURL, response.toString());
                startActivity(intent);
            } catch (Exception e) {
                System.out.println("Exp=" + e);
            }
            return null;
        }
 
        @Override
        protected void onPostExecute(String result) {
 
            dialog.dismiss();
            super.onPostExecute(result);
        }
 
        @Override
        protected void onPreExecute() {
 
            dialog = new ProgressDialog(MainActivity.this);
            dialog.setMessage("Загружаюсь...");
            dialog.setIndeterminate(true);
            dialog.setCancelable(true);
            dialog.show();
            super.onPreExecute();
        }
    }
}


SecondActivity
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package my.home.page;
 
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import android.widget.SimpleAdapter;
 
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import java.util.ArrayList;
import java.util.HashMap;
 
public class SecondActivity extends Activity {
 
    public static String JsonURL;
    private static ArrayList<HashMap<String, Object>> myBooks;
    private static final String N = "N";
    private static final String studentid = "studentid";
    private static final String subject = "subject";
    private static final String date = "date";
    public ListView listView;
 
    /** @param result */
    public void JSONURL(String result) {
 
        try {
            //создали читателя json объектов и отдали ему строку - result
            JSONObject json = new JSONObject(result);
            //дальше находим вход в наш json им является ключевое слово data
            JSONArray urls = json.getJSONArray("data");
            //проходим циклом по всем нашим параметрам
            for (int i = 0; i < urls.length(); i++) {
                HashMap<String, Object> hm;
                hm = new HashMap<String, Object>();
                //читаем что в себе хранит параметр firstname
                hm.put(N, urls.getJSONObject(i).getString("N").toString());
                //читаем что в себе хранит параметр lastname
                hm.put(studentid, urls.getJSONObject(i).getString("studentid").toString());
                //
                hm.put(subject, urls.getJSONObject(i).getString("subject").toString());
                //
                hm.put(date, urls.getJSONObject(i).getString("date").toString());
                myBooks.add(hm);
                //дальше добавляем полученные параметры в наш адаптер
                SimpleAdapter adapter = new SimpleAdapter(SecondActivity.this, myBooks, R.layout.list,
                        new String[] { N, studentid, subject, date, }, new int[] { R.id.text1, R.id.text2, R.id.text3, R.id.text4, });
                //выводим в листвбю
                listView.setAdapter(adapter);
                listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
            }
        } catch (JSONException e) {
            Log.e("log_tag", "Error parsing data " + e.toString());
        }
    }
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.url);
        listView = (ListView) findViewById(R.id.list);
        myBooks = new ArrayList<HashMap<String, Object>>();
        //принимаем параметр который мы послылали в manActivity
        Bundle extras = getIntent().getExtras();
        //превращаем в тип стринг для парсинга
        String json = extras.getString(JsonURL);
        //передаем в метод парсинга
        JSONURL(json);
    }
}
Layout:

list.xml
Код
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:orientation="horizontal"
  android:layout_height="wrap_content">

  <LinearLayout
  android:layout_width="265dip"
  android:orientation="vertical"
  android:layout_height="wrap_content">
  
  <TextView android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:id="@+id/text1"
  android:textSize="25dip"
  android:text="This is text1"/>
  
  <TextView android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:id="@+id/text2"
  android:text="This is text2"/>


   <TextView android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@+id/text3"
   android:text="This is text3"/>


   <TextView android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@+id/text4"
   android:text="This is text4"/>
  
  </LinearLayout>
</LinearLayout>


main.xml
Код
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:text="Залогиниться" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button1"
        android:layout_alignParentLeft="true"
        android:text="pass"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/editText2"
        android:layout_alignParentLeft="true"
        android:text="Пароль" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView2"
        android:layout_alignParentLeft="true"
        android:text="user"
        android:ems="10" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/editText1"
        android:layout_alignParentLeft="true"
        android:text="Логин" />

</RelativeLayout>


url.xml
Код
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ListView 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/list"
    />
</LinearLayout>
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
01.01.2015, 19:01 #7
И?
0
serikus
1 / 1 / 0
Регистрация: 02.02.2014
Сообщений: 40
01.01.2015, 19:31  [ТС] #8
Я скажу честно - я в коде андроид не понимаю почти ничего. Когда я пытаюсь переписывать код, мне мешает синтаксис C#, я часто замечал что некоторые строчки писал не на том языке, а изучать андроид ради одного приложения мне не хочется

Я понимаю, что то что я прошу требует времени и усилий, что это, можно сказать, носит почти коммерческий интерес - а ля написать за меня, но если никто не может/не хочет помочь, тогда просто можно закрыть тему)
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
02.01.2015, 09:59 #9
Чё, даже скопипастить влом было исправленные куски?
0
serikus
1 / 1 / 0
Регистрация: 02.02.2014
Сообщений: 40
02.01.2015, 12:23  [ТС] #10
Да нет, просто у меня там исправление. В том коде запрос по двум стрингам а у меня идет 4 стринга. Хорошо, я попробую по указанной Вами схеме, тогда отпишусь.
0
02.01.2015, 12:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2015, 12:23
Привет! Вот еще темы с ответами:

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

Android и удалённая MySQL - Программирование Android
Помогите разобраться, как вообще подключатся и работать с удалённой бд mysql? Почитал на форуме, погуглил, мало инфы, либо не совсем...

Подключение к MySQL на Android - Программирование Android
Доброе утро! Подскажите пожалуйста способы коннекта к MySQL в разработке приложений на android. Покопался по форумам, гуглу, нашёл...

Подключение к удаленной бд MySQL в Android - Программирование Android
Необходимо подключиться к внешней БД MySQL в Android приложении, которое бы использовало ресурсы готового сервиса, но без API. Знаю, что...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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