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

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

Войти
Регистрация
Восстановить пароль
 
KaRTMaN
2 / 2 / 1
Регистрация: 23.03.2009
Сообщений: 55
#1

Вывод элементов ListView в строчку - Программирование Android

14.12.2015, 16:33. Просмотров 481. Ответов 7
Метки нет (Все метки)

Есть вывод данных с базы в ListView :
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
class LoadAllProducts extends AsyncTask<String, String, String> {
 
        /**
         * Перед началом фонового потока Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(AllProductsActivity.this);
            pDialog.setMessage("Загрузка продуктов. Подождите...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }
 
        /**
         * Получаем все продукт из url
         * */
        protected String doInBackground(String... args) {
            // Будет хранить параметры
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            // получаем JSON строк с URL
            JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params);
 
            Log.d("All Products: ", json.toString());
 
            try {
                // Получаем SUCCESS тег для проверки статуса ответа сервера
                int success = json.getInt(TAG_SUCCESS);
 
                if (success == 1) {
                    // продукт найден
                    // Получаем масив из Продуктов
                    products = json.getJSONArray(TAG_PRODUCTS);
 
                    // перебор всех продуктов
                    for (int i = 0; i < products.length(); i++) {
                        JSONObject c = products.getJSONObject(i);
 
                        // Сохраняем каждый json елемент в переменную
                        String id = c.getString(TAG_PID);
                        String Oblact = c.getString(TAG_OBLACT);
                        String adress = c.getString(TAG_ADRESS);
                        String time = c.getString(TAG_TIME);
                        int tio = c.getInt(TAG_TIONS);                        // Создаем новый HashMap
                        HashMap<String, String> map = new HashMap<String, String>();
                        if (tio == 0) {
                            // добавляем каждый елемент в HashMap ключ => значение
                            map.put(TAG_PID, id);
                            map.put(TAG_OBLACT, Oblact);
                            map.put(TAG_ADRESS, adress);
                            map.put(TAG_TIME, time);
                            // добавляем HashList в ArrayList
                            productsList.add(map);
                        }
                    }
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
 
            return null;
        }
 
        /**
         * После завершения фоновой задачи закрываем прогрес диалог
         * **/
        protected void onPostExecute(String file_url) {
            // закрываем прогресс диалог после получение все продуктов
            pDialog.dismiss();
            // обновляем UI форму в фоновом потоке
            runOnUiThread(new Runnable() {
                public void run() {
                    /**
                     * Обновляем распарсенные JSON данные в ListView
                     * */
                    ListAdapter adapter = new SimpleAdapter(
                            AllProductsActivity.this, productsList,
                            R.layout.list_item, new String[] { TAG_PID,
                            TAG_OBLACT, TAG_ADRESS, TAG_TIME},
                            new int[] { R.id.pid, R.id.name, R.id.price, R.id.time });
                    // обновляем listview
                    setListAdapter(adapter);
                }
            });
 
        }
 
    }
Выводится область, адресс и время через ентер (в новой строке), как сделать что бы выводилось все в одной строчке?

Еще вопрос: я хочу добавить вывод номеров телефона сюда и нужно сделать так что бы при нажатии на номер телефона можно было позвонить сразу. Искал в интернете и нашел возможность сделать это через intent но как это реализовать в данном коде я пока не доехал. Помогите
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2015, 16:33
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вывод элементов ListView в строчку (Программирование Android):

Listview вывод данных и переход по нажатию на другой Listview SQLite - Программирование Android
Доброго извините за название темы, долго не мог сформировать название, В общем у меня беда с пытаюсь написать программу где первый экран...

Вывод в ListView - Программирование Android
Здравствуйте! Подскажите как в моем случае вывести базу данных JSON в ListView. Есть файл bd.json в папке assets. Он заполнен так; { ...

Вывод массивов через ListView - Программирование Android
Добрый день, возникла такая проблема: есть два массива list и discribe, создается список через ListView пункты списка должны браться из...

Вывод данных в список Listview - Программирование Android
Код: package com.example.projecta; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; ...

SQLite and ListView. Ввод и вывод данных - Программирование Android
Здравствуйте. Пишу программу(кто бы мог подумать). Есть подозрения, что данные в БД вбиваются не правильно или как раз выводятся...

Вывод из базы данных в ListView через SimpleCursorAdapter - Программирование Android
Доброе время суток. Пишу программу под Андроид в среде Android Studio и возникла проблема с выводом данных в listview через...

7
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
15.12.2015, 06:54 #2
про одну строчку. у Вас есть файл list_item - правте его.

не вижу в коде Ваш setListAdapter, так что сами ищите Ваш ListView. :-) и у него надо реализовать setOnItemClickListener. в нем в onItemClick надо написать "сделать это через intent".
1
Богдан Коломиец
1 / 1 / 0
Регистрация: 10.11.2015
Сообщений: 7
15.12.2015, 16:56 #3
Вам нужно создать свою разметку list_item и поработать с адаптером.
Вот пример
1
KaRTMaN
2 / 2 / 1
Регистрация: 23.03.2009
Сообщений: 55
15.01.2016, 01:42  [ТС] #4
Здраствуйту. С выводом в строчку я разобрался, спс за подсказку)
Если не трудно помогите со 2 частью. Сделать звонок по номеру телефона указанному в списке.

Вот полный код активити
Кликните здесь для просмотра всего текста
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
package com.devcolibri.androidandmysql;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
 
import com.devcolibri.parser.JSONParser;
import org.apache.http.NameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
 
public class AllProductsActivity extends ListActivity {
 
    private ProgressDialog pDialog;
 
    // Создаем JSON парсер
    JSONParser jParser = new JSONParser();
 
    ArrayList<HashMap<String, String>> productsList;
 
    // url получения списка всех продуктов
    private static String url_all_products = "http://v3nya.in.ua/get_all_products.php";
 
    // JSON Node names
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_PRODUCTS = "products";
    private static final String TAG_PID = "pid";
    private static final String TAG_OBLACT = "Oblact";
    private static final String TAG_ADRESS = "adress";
    private static final String TAG_TEL = "tel";
    private static final String TAG_TIME = "time";
    private static final String TAG_TIONS = "tions";
 
    // тут будет хранится список продуктов
    JSONArray products = null;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.all_products);
 
        // Hashmap for ListView
        productsList = new ArrayList<HashMap<String, String>>();
 
        // Загружаем прожукты в фоновом потоке
        new LoadAllProducts().execute();
 
        // получаем ListView
        ListView lv = getListView();
 
        // на выбор одного продукта
        // запускается Edit Product Screen
        lv.setOnItemClickListener(new OnItemClickListener() {
 
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                // getting values from selected ListItem
 
                String pid = ((TextView) view.findViewById(R.id.pid)).getText()
                        .toString();
                // Запускаем новый intent который покажет нам Activity
 
                Intent in = new Intent(getApplicationContext(), EditProductActivity.class);
                // отправляем pid в следующий activity
                in.putExtra(TAG_PID, pid);
 
                // запуская новый Activity ожидаем ответ обратно
                startActivityForResult(in, 100);
 
            }
        });
    }
 
    // Ответ из Edit Product Activity
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // если результующий код равен 100
        if (resultCode == 100) {
            // если полученный код результата равен 100
            // значит пользователь редактирует или удалил продукт
            // тогда мы перезагружаем этот экран
            Intent intent = getIntent();
            finish();
            startActivity(intent);
        }
    }
    /**
     * Фоновый Async Task для загрузки всех продуктов по HTTP запросу
     * */
    class LoadAllProducts extends AsyncTask<String, String, String> {
 
        /**
         * Перед началом фонового потока Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(AllProductsActivity.this);
            pDialog.setMessage("Загрузка продуктов. Подождите...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }
        /**
         * Получаем все продукт из url
         * */
        protected String doInBackground(String... args) {
            // Будет хранить параметры
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            // получаем JSON строк с URL
            JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", params);
 
            Log.d("All Products: ", json.toString());
 
            try {
                // Получаем SUCCESS тег для проверки статуса ответа сервера
                int success = json.getInt(TAG_SUCCESS);
 
                if (success == 1) {
                    // продукт найден
                    // Получаем масив из Продуктов
                    products = json.getJSONArray(TAG_PRODUCTS);
                    String n = "";
                    n = getIntent().getStringExtra("obla");
                    // перебор всех продуктов
                    for (int i = 0; i < products.length(); i++) {
                        JSONObject c = products.getJSONObject(i);
 
                        // Сохраняем каждый json елемент в переменную
                        String id = c.getString(TAG_PID);
                        String Oblact = c.getString(TAG_OBLACT);
                        String adress = c.getString(TAG_ADRESS);
                        String time = c.getString(TAG_TIME);
                        String tel = c.getString(TAG_TEL);
                        int tio = c.getInt(TAG_TIONS);                        // Создаем новый HashMap
                        HashMap<String, String> map = new HashMap<String, String>();
                        if (tio == 0 && n.equals(Oblact)) {
                            // добавляем каждый елемент в HashMap ключ => значение
                            map.put(TAG_PID, id);
                            map.put(TAG_OBLACT, Oblact);
                            map.put(TAG_ADRESS, adress);
                            map.put(TAG_TIME, time);
                            map.put(TAG_TEL, tel);
                            // добавляем HashList в ArrayList
                            productsList.add(map);
                        }
                    }
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
        }
        /**
         * После завершения фоновой задачи закрываем прогрес диалог
         * **/
        protected void onPostExecute(String file_url) {
            // закрываем прогресс диалог после получение все продуктов
            pDialog.dismiss();
            // обновляем UI форму в фоновом потоке
            runOnUiThread(new Runnable() {
                public void run() {
                    /**
                     * Обновляем распарсенные JSON данные в ListView
                     * */
                    ListAdapter adapter = new SimpleAdapter(
                            AllProductsActivity.this, productsList,
                            R.layout.list_item, new String[] { TAG_PID,
                            TAG_OBLACT, TAG_ADRESS, TAG_TIME, TAG_TEL},
                            new int[] { R.id.pid, R.id.name, R.id.price, R.id.time, R.id.tel });
                    // обновляем listview
                    setListAdapter(adapter);
                }
            });
        }
    }
}


и list_item.xml

Кликните здесь для просмотра всего текста
XML
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:orientation="vertical">
 
        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/pid"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:visibility="gone" />
            <TextView
                android:id="@+id/time"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:textSize="17dip" />
            <TextView
                android:id="@+id/name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:textSize="17dip"
                android:visibility="gone" />
            <TextView
                android:id="@+id/price"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_marginLeft="5dp"
                android:textSize="17dip" />
            <TextView
                android:id="@+id/tel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:visibility="gone" />
        </LinearLayout>
 
    <ImageView
        android:id="@+id/ivImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </ImageView>
    <Button
        android:id="@+id/telpr"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="5dp"
        android:onClick="showResult"
        android:text="111">
    </Button>
</LinearLayout>


Подскажите хоть в каком направлении двигаться и на какой участок кода смотреть, пожалуйста)
0
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
15.01.2016, 07:05 #5
я бы переделал из ListView в ScrollView.
он будет набран в цикле из LinearLayaut, каждый из которых будет уходить на Ваш EditProductActivity, но в нем еще будет текстовый элемент - телефон, который будет уходить на интент звонка.

есть еще вариант: собрать это все в WebView (может это самое правильное в Вашем случае, потому что Вы берете данные с сервера), но там надо будет поколдовать с передачей реакции из WebView на EditProductActivity и звонок. ничего сложного, просто надо разобратся.

но это надо подумать. :-)
1
KaRTMaN
2 / 2 / 1
Регистрация: 23.03.2009
Сообщений: 55
15.01.2016, 10:41  [ТС] #6
Спасибо. Буду думать)

ЕЩе один вопрос возник когда пытался сделать просто звонок при нажатии на строку

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
                // getting values from selected ListItem
 
                String pid = ((TextView) view.findViewById(R.id.pid)).getText()
                        .toString();
                int m = Integer.parseInt(pid);
 
                /*// Запускаем новый intent который покажет нам Activity
 
                Intent in = new Intent(getApplicationContext(), EditProductActivity.class);
                // отправляем pid в следующий activity
                in.putExtra(TAG_PID, pid);
 
                // запуская новый Activity ожидаем ответ обратно
                startActivityForResult(in, 100);*/
 
                Intent intent = new Intent(Intent.ACTION_CALL);
                intent.setData(Uri.parse("tel:" + productsList.get(1).entrySet().toArray()[4]));
                startActivity(intent);
Звонок производится но совсем не по тому номеру который забил в productsList.get(1).entrySet().toArray()[4]).

Не могу понять почему?
0
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
15.01.2016, 12:35 #7
между 16 и 17 строками сделайте отдельно присвоение переменной, и проследите за значением.
попробуйте на вход вызову звонка подать свой, известный номер.
засада или там или тут, не с марса же левый номер идет. :-)
1
KaRTMaN
2 / 2 / 1
Регистрация: 23.03.2009
Сообщений: 55
08.02.2016, 10:10  [ТС] #8
Я сделал проще) Звонок из активити просмотра товара)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2016, 10:10
Привет! Вот еще темы с ответами:

Просмотр элементов в ListView - Программирование Android
нужно что бы при нажатии на элемент открывалось отдельное окно с более детальной информацией данного элемента

Добавление элементов в listview из БД - Программирование Android
Здравствуйте. У меня не выходит выбросить из списка одинаковые элементы. Я из БД вытаскиваю номера групп, которые соответственно...

Прорисовка элементов в ListView - Программирование Android
Доброго дня. Необходимо сделать свой список с своим View, нашёл статью и сделал как в ней. Но поведение CheckBox'ов оказалось поломанное....

Добавление нескольких элементов в ListView - Программирование Android
Не могу разобрался с ListView.Есть несколько адаптеров как их добавить в ListView?


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

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

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