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

Смена TextView в ListView - Android

Восстановить пароль Регистрация
 
poy4eg
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 40
21.07.2015, 18:01     Смена TextView в ListView #1
Суть: есть каталог товаров, список заполняется через 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>
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
21.07.2015, 19:10     Смена TextView в ListView #2
Цитата Сообщение от poy4eg Посмотреть сообщение
Подскажите как быть и решить проблему..
Писать свой адаптер или допиливать метод getView() вашего.
При нажатии же ж на клавишу вызывать notifyDataSetChanged() адаптера.

Пока всё

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

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

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

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

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

Android Получить текст из одного TextView в кастомном ListView
Получить доступ к TextView внутри ListView Android
Android TextView в элементе ListView
ListView с несколькими TextView Android
TextView бд Android

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

Или воспользуйтесь поиском по форуму:
Rube
22.07.2015, 07:14     Смена TextView в ListView
  #8

Не по теме:

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

Yandex
Объявления
22.07.2015, 07:14     Смена TextView в ListView
Ответ Создать тему
Опции темы

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