Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
1

Сложить числа из ListView

11.09.2016, 22:10. Просмотров 1068. Ответов 56
Метки нет (Все метки)

Есть список (ListView). С помощью SimpleAdapter формируется этот список, добавляются и удаляются записи. Записи состоят из чисел. Как мне сложить эти числа, чтоб общий результат выводился?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2016, 22:10
Ответы с готовыми решениями:

ListView. После добавления кнопки перестал быть доступен сам ListView
Кастомизировал ListView с помощью нескольких TextView. Но после того, как...

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

Данные из SQlite в ListView, обработка события ListView
Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные...

Передача данных из ListView в другой Activity в ListView
Добрый день. Пытаюсь разобраться с передачей данных с ListView, но выходит что...

ListView, ToggleButton, SQLite, CursorAdapter. Как найти idItem в ListView, где была нажата ToggleButton?
Добрый день. Затрудняюсь понять один момент: У меня есть ListView,...

56
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
13.09.2016, 20:27  [ТС] 21
Цитата Сообщение от OlegJV Посмотреть сообщение
олько не надо в ArrayList<Float> добавлять (ATTRIBUTE_NAME_TEXT, getString(R.string.name1) + " " + result + " м")
Код должен быть таким?
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
public class MainActivity extends Activity {
 
 
    TextView tvResult;
 
    private static final int CM_DELETE_ID = 1;
 
    final String ATTRIBUTE_NAME_TEXT = "text";
    final String ATTRIBUTE_NAME_IMAGE = "image";
 
    ListView lvSimple;
    SimpleAdapter sAdapter;
    ArrayList<Float> data;
    Map<String, Object> m;
 
    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        tvResult = (TextView) findViewById(R.id.tvResult);
 
 
        data = new ArrayList<Map<String, Object>>();
 
 
 
        String[] from = { ATTRIBUTE_NAME_TEXT, ATTRIBUTE_NAME_IMAGE };
        int[] to = { R.id.tvText, R.id.ivImg };
 
        sAdapter = new SimpleAdapter(this, data, R.layout.item, from, to);
 
        lvSimple = (ListView) findViewById(R.id.lvSimple);
        lvSimple.setAdapter(sAdapter);
        registerForContextMenu(lvSimple);
 
 
 
 
    }
 
 
    public void onButtonClick(View v) {
        Intent intent = new Intent(this, Main2Activity.class);
        startActivityForResult(intent, 1);
 
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data2) {
        if (data2 == null) {
            return;
        }
        String name = data2.getStringExtra("name");
        String name2 = data2.getStringExtra("name2");
        float result = 0;
        float n1 = 0;
        float n2 = 0;
        n1 = Float.parseFloat(name);
        n2 = Float.parseFloat(name2);
        result = n1 * n2;
        m = new HashMap<String, Object>();
        m.put(ATTRIBUTE_NAME_TEXT, getString(R.string.name1) + " " + result + " м");
        m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.ic_launcher);
        data.add(m);
        sAdapter.notifyDataSetChanged();
        int summa=0;
        for (int i=0;i<data.size();i++){
            summa = summa + data.get(i);
        }
            tvResult.setText(getString(R.string.name1) + " " + summa + " м");
 
    }
 
 
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
                                    ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(0, CM_DELETE_ID, 0, "Удалить");
    }
 
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        if (item.getItemId() == CM_DELETE_ID) {
            AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item.getMenuInfo();
           data.remove(acmi.position);
            sAdapter.notifyDataSetChanged();
            return true;
        }
        return super.onContextItemSelected(item);
    }
}
Добавлено через 2 часа 41 минуту
Цитата Сообщение от OlegJV Посмотреть сообщение
А если подумать, чему равно data.get(i)? Это что, число?
Цитата Сообщение от OlegJV Посмотреть сообщение
Потом все как и было:

for (int i = 0; i < data.size(); i ++){
* * *summa = summa + data.get(i);
}
Так получается что?
0
ExFau$t
567 / 511 / 115
Регистрация: 08.05.2012
Сообщений: 2,543
13.09.2016, 20:51 22
Получается, что тебе нужно открывать книжки по программированию и читать их с самого начала.
0
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
13.09.2016, 21:07  [ТС] 23
Цитата Сообщение от ExFau$t Посмотреть сообщение
Получается, что тебе нужно открывать книжки по программированию и читать их с самого начала.
Спасибо огромное за совет. Именно за ним я сюда и пришёл. Я тоже всем такие советы даю, когда не знаю чем помочь.
0
REALIST07
Автор FAQ
Автор FAQ
182 / 182 / 20
Регистрация: 11.06.2010
Сообщений: 949
13.09.2016, 21:41 24
naven, сделай с помощью кастомного адаптера, который наследуется от baseadapter, хешмап как и enum убивает время,нервы и ресурсы
0
ExFau$t
567 / 511 / 115
Регистрация: 08.05.2012
Сообщений: 2,543
13.09.2016, 21:44 25
REALIST07, увы, эти действия не помогут сложить тип int и string
0
REALIST07
Автор FAQ
Автор FAQ
182 / 182 / 20
Регистрация: 11.06.2010
Сообщений: 949
13.09.2016, 21:46 26
ExFau$t, эти действия помогут создать модель с нужными числами и строками и все будет разграничено и понятно
0
ExFau$t
13.09.2016, 22:12
  #27

Не по теме:

REALIST07, я то понимаю, но дом строится с фундамента, а не так, что крышу спёр где-то и пытается её приладить.

0
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
13.09.2016, 22:32  [ТС] 28
Цитата Сообщение от ExFau$t Посмотреть сообщение
Не по теме:
REALIST07, я то понимаю, но дом строится с фундамента, а не так, что крышу спёр где-то и пытается её приладить.
А бывает такое: и фундамент есть, и стены, разбираешься как крышу сделать, а бестолковые умники начинают советовать:"Иди фундамент заливай"
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
13.09.2016, 23:55 29
Если человеку каждый вечер на ужин нужно яйцо на сковородке - это нормально. Если человек хранит в холодильнике месячный запас в 30 яиц - тоже ничего. Но если этот человек будет там же хранить еще и 30 сковородок, такого человека сочтут, мягко говоря, загадочным. Как бы еще попрозрачней намекнуть? Единственное, что тебе нужно хранить - это различные значения result. Их можно хранить в виде ArrayList<Float>. Если тебе надо выводить на экран не просто число result, а в виде getString(R.string.name1) + " " + result + " м", то это можно сделать непосредственно перед выводом на экран. Берешь значение result из ArrayList<Float> и добавляешь к нему нужные строки. Если речь идет о ListView, то это можно делать в кастомном адаптере. Картинку ic_launcher вообще можно встроить в разметку item для ListView. Сумма считается, как написано выше. Просто в ArrayList<Float> будут складываться именно float с float. Это нормально. А если пытаться к значению result прибавить картинку ic_launcher, а к ним потом строку R.string.name1 - это ненормально. Все ежики, с которыми я знаком, это понимают. Это все, что я могу сказать, если тебе нужна помощь. Если тебе надо полностью написать код - есть тема "Программы на заказ". Если теперь будет вопрос типа "и что?" - заранее отвечаю: и ничего.
0
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
14.09.2016, 12:15  [ТС] 30
OlegJV, то есть через simpleadapter это не получится сделать?
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
14.09.2016, 14:46 31
А в чем проблема адаптер сделать свой?
0
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
14.09.2016, 14:49  [ТС] 32
OlegJV, проблемы нет. Просто спросил получится через simpleadapter или нет.
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
14.09.2016, 15:08 33
Можно сделать все. Вопрос насколько это будет удобно и эффективно.

Добавлено через 8 минут
Например: вместо массива Float храним данные в виде ArrayList<String>, куда суем так настойчиво навязываемые тобой getString(R.string.name1) + " " + result + " м". Тогда для подсчета суммы надо будет парсить каждую строку выдирая из нее значение result. Типа, если мы знаем длину name1, для простоты - что-то типа Float.parseFloat(getString(R.string.name1).substring(10, getString(R.string.name1).length - 3)). Или регулярками. Но за такое надо руки отрывать. Оно тебе надо?

Добавлено через 1 минуту
Можно еще сначала добавлять каждый result в сумму, а только потом совать его в строку и добавлять в массив. Опять же тогда избыточные данные хранить будем.

Добавлено через 59 секунд
Наверняка кто-то еще способы придумает. Тебе предложили самый простой и очевидный.
0
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,577
Завершенные тесты: 1
14.09.2016, 15:14 34
я все обсуждение не читал, может кто-то уже предлагал такое
почему бы просто не считать сумму одним проходом по листу или массиву, который передается в адаптер?
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
14.09.2016, 15:22 35
Паблито, ТС упорно хочет хранить данные в виде ArrayList<Map<String, Object>>(), где в String хранится конструкция getString(R.string.name1) + " " + result + " м". Мы не ищем легких путей.
0
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
21.09.2016, 18:06  [ТС] 36
Цитата Сообщение от OlegJV Посмотреть сообщение
Мы не ищем легких путей
Лёгкий путь это кастомный адаптер?

Добавлено через 6 минут
Цитата Сообщение от OlegJV Посмотреть сообщение
Можно еще сначала добавлять каждый result в сумму, а только потом совать его в строку и добавлять в массив.
а как тогда при удалении вычитать result из суммы, если в массиве они string?

Добавлено через 18 часов 9 минут
Цитата Сообщение от OlegJV Посмотреть сообщение
хочет хранить данные в виде ArrayList<Map<String, Object>>()
Если одни цифры хранить, не понятно будет что это за цифры.
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
21.09.2016, 20:39 37
Какие у тебя предложения?
0
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
21.09.2016, 20:40  [ТС] 38
OlegJV, да если бы у меня были предложения, я бы тут не спрашивал.
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
21.09.2016, 21:24 39
Тебе ответили. В твоем ArrayList просто офигеть как понятно, что за цифры...
0
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
21.09.2016, 21:29  [ТС] 40
OlegJV, ну допустим я все уберу ту "конструкцию", выводится список из цифр, например, 25, 35, 50. А как добавить текст, чтоб было понятно что это площадь 25 метров, 35 метров, 50 метров?
0
21.09.2016, 21:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2016, 21:29

Копирование данных из 1 listView во 2 listView
Нужно что бы при нажатии на один элемент в первом ListView он копировался во...

Использование ListView в ListView
Всем привет. Можете показать как использовать ListView в ListView, с...

Переход из Listview в Listview
Как сделать, что бы когда нажимаешь в главном листвью на кнопку, открывалось...


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

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

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