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

Сохранить измененные значения EditText в ListView при прокрутке - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Хотел спросить по БД ! http://www.cyberforum.ru/android-dev/thread1018165.html
Я бы хотел сделать программу English trener подскажите пожалуйста какую БД мне желательно использовать . В программе будут тексты, изображение, может быть аудио .
Android proguard Пытаюсь сделать обфускацию приложения при помощи Proguard. В теории вроде всё просто, на практике - никак не выходит. Для работы программы в libs есть две дополнительные библиотеки: android-support-v4.jar jaybird2_2_3.jar и каталог armeabi с парой файлов с расширением .so Без proguard всё нормально работает. Для подключения proguard в project.properties прописываю путь http://www.cyberforum.ru/android-dev/thread1018162.html
Как побороть нехвату памяти? Android
Это просто ужас: приложение весит всего ~ 5МБ и для него выделено только 7.32 МБ памяти, с которых свободно (доступно) только 385 Кило!байт. И это на устройстве Giayu G2 (тот, который с гигом оперативки) Память измерял функциями: Runtime.getRuntime().totalMemory(); Runtime.getRuntime().freeMemory(); android:largeHeap="true" - до задницы, выделение памяти от этого не меняется.. - в итоге...
Android Проверка на первый запуск
Доброго дня, коллеги. Есть задача, чтобы при первом запуске приложения показывался экран с небольшим мануалом и страница авторизации пользователя. Каким образом это моэно осуществить? Спасибо за подсказки.
Android как можно осуществить запись с линии голоса и воспроизведение аудио записи в линию? http://www.cyberforum.ru/android-dev/thread1017274.html
Всем привет! захотелось побаловаться с реализацией автоответчика на андроиде. нужно, чтобы при поступление звонка "снималась трубка", воспроизводилась собеседнику заранее заготовленная аудио запись, потом включалась запись линии пока собеседник не положит трубку. слушать линяю можно только на рутованных аппаратах с определенными драйверами. а про воспроизведение записи в линию я вообще ничего...
Android Локальный сервер на Reddwarf и Android Здравствуйте! Сейчас начинаю изучать разработку online-игр, понравился Reddwarf, но сразу возник вопрос, как мне получить доступ с телефона к серверу для тестирования при разработке, если сервер локальный? P.S. Я только начал изучать, информации на русском на эту тему не нашел... Поэтому, если что-то глупое спросил, то без гневных комментов, пожалуйста подробнее

Показать сообщение отдельно
EVGEN-2208
0 / 0 / 0
Регистрация: 25.11.2013
Сообщений: 2

Сохранить измененные значения EditText в ListView при прокрутке - Android

25.11.2013, 11:37. Просмотров 1312. Ответов 2
Метки (Все метки)

Добрый день, прошу помощи, т.к. уже долго и безрезультатно пытаюсь решить следующую
задачу:

Есть Листвью с названиями товаров , состоящих из TextView-названий и EditText-весом/шт.
Значение EditText меняется по нажатию на Button "+".
При нажатии на кнопку значение EditText меняется и товар сохраняется "в корзину".

Проблема следующая: при прокрутке все сбивается и значения поля "вес/шт" меняются сами по себе.

Основной класс:
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
public class MainActivity extends Activity {
 
  ArrayList<Product> products = new ArrayList<Product>();
  BoxAdapter boxAdapter;
 
  /** Called when the activity is first created. */
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
 
    // создаем адаптер
    fillData();
    boxAdapter = new BoxAdapter(this, products);
 
    // настраиваем список
    ListView lvMain = (ListView) findViewById(R.id.lvMain);
    lvMain.setAdapter(boxAdapter);
  }
 
  // генерируем данные для адаптера
   
  
  void fillData() {
      products.add(new Product("Помидоры", 60, R.drawable.ic_launcher, false,0));
      products.add(new Product("Огурцы", 60, R.drawable.ic_launcher, false,0));
      products.add(new Product("Перец", 60, R.drawable.ic_launcher, false,0));
      products.add(new Product("Бананы", 60, R.drawable.ic_launcher, false,0));
      products.add(new Product("Апельсины", 60, R.drawable.ic_launcher, false,3));
      products.add(new Product("Мандарины б/кост", 60, R.drawable.ic_launcher, false,2));
      products.add(new Product("Яблоки красные", 60, R.drawable.ic_launcher, false,0));
      products.add(new Product("Груша конференц", 60, R.drawable.ic_launcher, false,0));
      products.add(new Product("хуярма", 60, R.drawable.ic_launcher, false,0));
      
//   for (int i = 1; i <= 20; i++) {
//     products.add(new Product("Product " + i, i * 1000,
//         R.drawable.ic_launcher, false));
//   }
  }
 
  // выводим информацию о корзине
  public void showResult(View v) {
    String result = "Товары в корзине:";
    for (Product p : boxAdapter.getBox()) {
      if (p.box)
        result += "\n" + p.name+" "+p.ves+" кг";
    }
    Toast.makeText(this, result, Toast.LENGTH_LONG).show();
  }
  
  
}

Адаптер:
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
public class BoxAdapter extends BaseAdapter {
  Context ctx;
  LayoutInflater lInflater;
  ArrayList<Product> objects;
 
  BoxAdapter(Context context, ArrayList<Product> products) {
    ctx = context;
    objects = products;
    lInflater = (LayoutInflater) ctx
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  }
 
  // кол-во элементов
  @Override
  public int getCount() {
    return objects.size();
  }
 
  // элемент по позиции
  @Override
  public Object getItem(int position) {
    return objects.get(position);
  }
 
  // id по позиции
  @Override
  public long getItemId(int position) {
    return position;
  }
 
  // пункт списка
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    // используем созданные, но не используемые view
    View view = convertView;
    if (view == null) {
      view = lInflater.inflate(R.layout.item, parent, false);
    }
 
    Product p = getProduct(position);
 
    // заполняем View в пункте списка данными из товаров: наименование, цена
    // и картинка
    ((TextView) view.findViewById(R.id.tvDescr)).setText(p.name);
    ((TextView) view.findViewById(R.id.tvPrice)).setText(p.price + "");
    ((ImageView) view.findViewById(R.id.ivImage)).setImageResource(p.image);
 
 
 
    EditText etves = (EditText) view.findViewById(R.id.tv);
    etves.setText(String.valueOf(p.ves));
    Button btnplus = (Button) view.findViewById(R.id.button1);
    
    etves.setTag(position);
    TextWatcherP inputTextWatcher= new TextWatcherP(etves);
    etves.addTextChangedListener(inputTextWatcher); 
    
    if (p != null) {
            
        btnplus.setTag(etves);
        btnplus.setOnClickListener(
                new OnClickListener() {
            @Override
            public void onClick(View v) {
                float vves;
                
                vves = Float.parseFloat((((EditText)v.getTag()).getText()).toString());
                ++vves;
                ((EditText)v.getTag()).setText(String.valueOf(vves));
                
                
            }
        
    }); 
           
        
        
    }
    
 
    
 
        
    return view;
  }
 
  // товар по позиции
  Product getProduct(int position) {
    return ((Product) getItem(position));
  }
 
  // содержимое корзины
  ArrayList<Product> getBox() {
    ArrayList<Product> box = new ArrayList<Product>();
    for (Product p : objects) {
      // если в корзине
      if (p.ves>0)
          p.box=true;
        box.add(p);
    }
    return box;
  }
 
  
  
  public class TextWatcherP implements TextWatcher {
      public EditText editText;
      public Float vves;
      public TextWatcherP(EditText et){
          super();
          editText = et;
      }
    
      public void afterTextChanged(Editable s) {
          getProduct((Integer) editText.getTag()).ves = vves;
          
      }
      
      public void beforeTextChanged(CharSequence s, int start, int count, int after){
          
      }
      
      public void onTextChanged(CharSequence s, int start, int before, int count) {
          vves=Float.parseFloat(editText.getText().toString());
          
          
      }
};
 
 
}
причем когда "снимаем" значение с эдиттекста до изменения текста, то все сохраняется как надо, но без последнего нажатия.

Java
1
2
3
4
5
6
7
8
9
10
public void afterTextChanged(Editable s) {
          getProduct((Integer) editText.getTag()).ves = vves;
          
      }
 
public void beforeTextChanged(CharSequence s, int start, int count, int after){
          vves=Float.parseFloat(editText.getText().toString());
      }
      
public void onTextChanged(CharSequence s, int start, int before, int count) {
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru