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

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

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

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

14.12.2015, 16:33. Просмотров 295. Ответов 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 но как это реализовать в данном коде я пока не доехал. Помогите
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
15.12.2015, 06:54     Вывод элементов ListView в строчку #2
про одну строчку. у Вас есть файл list_item - правте его.

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


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

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

но это надо подумать. :-)
KaRTMaN
2 / 2 / 1
Регистрация: 23.03.2009
Сообщений: 55
15.01.2016, 10:41  [ТС]     Вывод элементов ListView в строчку #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]).

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

Вывод из базы данных в ListView через SimpleCursorAdapter Android
Android Получение нажатых элементов listview
Вывод массивов через ListView Android
Прорисовка элементов в ListView Android
Android Асинхронная загрузка элементов в listview

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

Или воспользуйтесь поиском по форуму:
KaRTMaN
2 / 2 / 1
Регистрация: 23.03.2009
Сообщений: 55
08.02.2016, 10:10  [ТС]     Вывод элементов ListView в строчку #8
Я сделал проще) Звонок из активити просмотра товара)
Yandex
Объявления
08.02.2016, 10:10     Вывод элементов ListView в строчку
Ответ Создать тему
Опции темы

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