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

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

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

Смена TextView в ListView - Программирование Android

21.07.2015, 18:01. Просмотров 380. Ответов 7
Метки нет (Все метки)

Суть: есть каталог товаров, список заполняется через ListView из базы.. с этим все в порядке, но есть задача следующего характера: у нас есть в каждом элементе ListView клавиши "+" и "-" , при нажатии которых должны меняться значения в базе и в TextView.. с редактированием базы проблем нет, а вот засетить новый текст в TextView конкретного элемента из списка беда..

В представленном коде он неправильно определяет позицию элемента в котором надо менять текст - путает вообщем..

Подскажите как быть и решить проблему..


Ява
Кликните здесь для просмотра всего текста
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
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
 
 
public class catalog_content extends Activity {
 
    Cursor cursor;
    DBHelper db;
    String category, subcategory, price;
    ContentAdapter contentAdapter;
    TextView tvSubcat;
    ListView lvData;
 
    CheckBox checkBox;
 
    int status;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.catalog_content);
 
        category = getIntent().getExtras().getString("category");
 
       
        db = new DBHelper(this);
        db.open();
        
        cursor = db.getContent(category);
        while (cursor.moveToNext()) {
        final String[] from = new String[]{db.COLUMN_IMG, db.COLUMN_DESCRIBE, db.COLUMN_PRICE, db.COLUMN_SUM, db.COLUMN_STATUS};
        final int[] to = new int[]{R.id.ivIMG, R.id.tvDescribe, R.id.tvPrice, R.id.tvSum, R.id.checkbox};
        contentAdapter = new ContentAdapter(this, R.layout.content_item, cursor, from, to);
        lvData = (ListView) findViewById(R.id.lvContent);
        lvData.setAdapter(contentAdapter);
 
    }
 
    public  void addToCart(View view){
        final int op = lvData.getPositionForView((View) view.getParent());
        Cursor cursor = (Cursor) lvData.getItemAtPosition(op);
        String describe = cursor.getString(cursor
                .getColumnIndex(db.COLUMN_DESCRIBE));
        this.status = this.status == 1 ? 0 : 1;
        db.updateStatus(describe, status);
    }
 
    public  void plus(View view){
        final int op = lvData.getPositionForView((View) view.getParent());
        Cursor cursor = (Cursor) lvData.getItemAtPosition(op);
        String describe = cursor.getString(cursor
                .getColumnIndex(db.COLUMN_DESCRIBE));
        int sum = Integer.parseInt(cursor.getString(cursor
                .getColumnIndex(db.COLUMN_SUM)));
        sum=sum+1;
        String sumShow = String.valueOf(sum);
        db.updateResult(describe, sum);
        int result = Integer.parseInt(cursor.getString(cursor
                .getColumnIndex(db.COLUMN_PRICE)));
        int itog = result*sum;
        String itogShow = String.valueOf(itog);
        View itemView = (View)lvData.getParent();
        TextView tvItog= (TextView) itemView.findViewById(R.id.tvItog);
        TextView tvSum= (TextView) itemView.findViewById(R.id.tvSum);
        tvSum.setText(sumShow.toString());
        tvItog.setText(itogShow.toString());
        System.out.println("Успех!");
    }
 
    public  void minus(View view){
        final int op = lvData.getPositionForView((View) view.getParent());
        Cursor cursor = (Cursor) lvData.getItemAtPosition(op);
        String describe = cursor.getString(cursor
                .getColumnIndex(db.COLUMN_DESCRIBE));
        int sum = Integer.parseInt(cursor.getString(cursor
                .getColumnIndex(db.COLUMN_SUM)));
        sum=sum-1;
        String sumShow = String.valueOf(sum);
        db.updateResult(describe, sum);
        int result = Integer.parseInt(cursor.getString(cursor
                .getColumnIndex(db.COLUMN_PRICE)));
        int itog = result*sum;
        String itogShow = String.valueOf(itog);
        View itemView = (View)lvData.getParent();
        TextView tvItog= (TextView) itemView.findViewById(R.id.tvItog);
        TextView tvSum= (TextView) itemView.findViewById(R.id.tvSum);
        tvSum.setText(sumShow.toString());
        tvItog.setText(itogShow.toString());
        System.out.println("Успех!");
    }
 
}


Элементы из ListView
Кликните здесь для просмотра всего текста
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
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
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="120dp"
    >
 
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="5dp"
    android:background="@drawable/content_item"
 
    >
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="3"
        android:orientation="vertical"
        >
 
        <ImageView
            android:id="@+id/ivIMG"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@color/black"
            android:scaleType="centerCrop"
            />
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:orientation="horizontal"
            android:gravity="center"
            >
 
            <TextView
                android:id="@+id/tvPrice"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:text=" "
                android:textColor="@color/yellow_lite"
                android:gravity="center_vertical"
                android:textSize="11sp"
                android:textStyle="bold"
                />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:text=" р."
                android:textColor="@color/yellow_lite"
                android:gravity="center_vertical"
                android:textSize="11sp"
                android:textStyle="bold"
                />
 
        </LinearLayout>
 
    </LinearLayout>
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="horizontal"
        >
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:layout_weight="1"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:orientation="vertical"
                >
 
                <TextView
                    android:id="@+id/tvDescribe"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:text="информация о товаре"
                    android:textColor="@color/white"
                    android:paddingLeft="3dp"
                    />
 
            </LinearLayout>
 
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="2"
                android:orientation="horizontal"
                >
 
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:text="Сумма заказа: "
                    android:textColor="@color/white"
                    android:paddingLeft="3dp"
                    android:gravity="center_vertical"
                    android:textSize="11sp"
                    android:textStyle="bold"
                    />
 
                <TextView
                    android:id="@+id/tvItog"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:text="-"
                    android:textColor="@color/white"
                    android:paddingLeft="3dp"
                    android:gravity="center_vertical"
                    android:textSize="11sp"
                    android:textStyle="bold"
                    />
 
            </LinearLayout>
 
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="horizontal"
                android:layout_weight="2"
                >
                <Button
                    style="@style/PlusMinus"
                    android:layout_weight="2"
                    android:text="-"
                    android:gravity="center"
                    android:onClick="minus"
                    />
                <TextView
                    android:id="@+id/tvSum"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="итого"
                    android:textColor="@color/white"
                    android:gravity="center"
                    />
 
                <Button
                    style="@style/PlusMinus"
                    android:layout_weight="2"
                    android:text="+"
                    android:gravity="center"
                    android:onClick="plus"
                    />
            </LinearLayout>
 
        </LinearLayout>
 
        <CheckBox
            android:id="@+id/cbStatus"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="5"
            android:button="@drawable/checkbox"
            android:onClick="addToCart"
            />
 
    </LinearLayout>
 
</LinearLayout>
</LinearLayout>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2015, 18:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Смена TextView в ListView (Программирование Android):

Смена значения TextView по таймеру - Программирование Android
Подскажите, пожалуйста, как решить следующую проблему. Имеется код: public class MainActivity extends Activity { /** *...

ListView с несколькими TextView - Программирование Android
Как сделать более одного TextView в одном элементе ListView, и как к ним обращаться ?

TextView в элементе ListView - Программирование Android
Имеется ListView, у него как положена имеется кастомный адаптер с довольно усложненной логикой. При нажатии на одном из пунктов содержимое...

Получить количество строк в TextView (ListView) - Программирование Android
привет всем. уже очень давно никак не могу получить количество строк в TextView который находится в ListView. каждый итем - TextView. ...

Передать из строки ListView в 2 поля TextView? - Программирование Android
Добрый всем! Добавлено через 8 минут есть ListView в нем добавлены/добавляются из полей TextView данные (Name и Email) а так же...

TextView и ListView с единой прокруткой ScrollView(?) - Программирование Android
Всем привет, столкнулся с проблемой при одновременном отображении ListView и TextView . Не получается отобразить эти 2 блока как единый...

7
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
21.07.2015, 19:10 #2
Цитата Сообщение от poy4eg Посмотреть сообщение
Подскажите как быть и решить проблему..
Писать свой адаптер или допиливать метод getView() вашего.
При нажатии же ж на клавишу вызывать notifyDataSetChanged() адаптера.

Пока всё

Тут стока всяких обсуждалок этого, что уже скушно
0
poy4eg
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 40
21.07.2015, 19:22  [ТС] #3
Цитата Сообщение от Armagedo Посмотреть сообщение
Писать свой адаптер или допиливать метод getView() вашего.
При нажатии же ж на клавишу вызывать notifyDataSetChanged() адаптера.
Пока всё
Тут стока всяких обсуждалок этого, что уже скушно
у меня и так свой адаптер, вроде я его сильно не прятал, чтобы не видеть.
а вообще отличный пост с советом, жаль что бессмысленный из-за отсутствия хоть какой информации по делу, которой гугл мне не дал.

проблема создания 3 тысяч одинаковых тем, в том, что ответов на вопрос ТСа, таких же как ваших - 80% на страницу, а конкретики (кода), один максимум.. подумайте об этом в следующий раз, прежде, чем кому-то "помочь"
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,663
Завершенные тесты: 1
21.07.2015, 20:05 #4
Цитата Сообщение от poy4eg Посмотреть сообщение
проблема создания 3 тысяч одинаковых тем, в том, что ответов на вопрос ТСа, таких же как ваших - 80%
Вполне нормальный ответ.
Цитата Сообщение от poy4eg Посмотреть сообщение
а конкретики (кода), один максимум..
Да потому что универсального кода под "у меня сделано так, как сделать чтобы было так" нет. И максимум чем можно помочь при отсутствии ВСЕГО кода проекта зачастую и есть "бессмысленный" ответ. А вообще нужно понимать что ListView это просто View, который по идее не должен сам себя перерисовывать. У вас есть адаптер, который подставляет нужные данные в нужные элементы, а берет он их из какого-то массива данных, дак вот меняйте сам массив данных и как сказал Armagedo вызывайте notifyDataSetChanged().
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
21.07.2015, 21:07 #5
Цитата Сообщение от poy4eg Посмотреть сообщение
у меня и так свой адаптер, вроде я его сильно не прятал, чтобы не видеть
Конечно, вот этого

Java
1
2
3
ContentAdapter contentAdapter;
...
contentAdapter = new ContentAdapter(this, R.layout.content_item, cursor, from, to);
всем достаточно, чтобы понять, что это за зверь у вас такой, ваш адаптер, и дать более конкретный совет.
Хотя Spelcrawler вам и его постарался "раскрутить".

Цитата Сообщение от poy4eg Посмотреть сообщение
а вообще отличный пост с советом, жаль что бессмысленный
"С такого начала не делают дел" (с) М.Круг

Впрочем, как только вы поймёте базовый механизм работы ListView и его адаптера, тогда вы не только поймёте, что подсказано вам было ну просто "с головой", но и ваш вопрос перейдёт в категорию "зачем я его задавал".
0
poy4eg
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 40
21.07.2015, 21:23  [ТС] #6
Я понял вашу позицию и что смысла писать сюда с просьбой о помщи не было смысла, закрывайте тему
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
21.07.2015, 23:42 #7
Цитата Сообщение от poy4eg Посмотреть сообщение
Я понял вашу позицию и что смысла писать сюда с просьбой о помщи не было смысла, закрывайте тему
Аминь
0
Rube
22.07.2015, 07:14     Смена TextView в ListView
  #8

Не по теме:

Какой гордый орель.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2015, 07:14
Привет! Вот еще темы с ответами:

Получить доступ к TextView внутри ListView - Программирование Android
Привет, форумчане! Сначала кратко(потребуется код выложу, просто нужно понять принцип): Есть Активити на базе ЛистАктивити, в ней ЛистВью...

Получить текст из одного TextView в кастомном ListView - Программирование Android
Есть кастомный ListView, в котором есть картинка и два TextView, как при нажатии на элемент этого списка получить текст допустим второго...

Как создать ListView с двумя TextView и работать с ними - Программирование Android
Как создать ListView с двумя TextView и работать с ними использую класс Adapter(Ну или чем то похожим если такое существует).

Как в ListView обработать нажатие кнопки и изменить здесь же значение в textView ? - Программирование Android
У меня есть ListView, у него есть своя разметка на которой находится строчки на каждой из которых Button и textView. Как мне обработать...


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

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

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