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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 5.00
marvitalik
0 / 0 / 0
Регистрация: 01.01.2014
Сообщений: 9
#1

Как получить данные из EditText, созданного программно, или как узнать ID элемента? - Android

01.01.2014, 18:28. Просмотров 2577. Ответов 5
Метки нет (Все метки)

Всем здрасте и с Новым годом!
Суть вопроса:
Как получить значение, введенное пользователем в EditText, созданного программно или через адаптер?
Ведь его ID не известно
Теперь подробнее:
Есть список, состоящий из строк:
TextViev - EditText
TextViev - EditText
TextViev - EditText
...
и т.д.

кол-во этих строк заранее не известно (значения TextViev берутся из массива или базы SQLite, их кол-во может изменяться).
Сам экран создать у меня получилось с помощью SimpleAdapter, но вот вытащить данные из EditText не получается.
При заранее известном количестве строк я мог бы создать список через layout-файл и считывать данные с помощью findViewById() и getText().toString(), но в моем случае я не могу знать ID созданных EditText.
В программировании я новичок, перерыл уже кучу сайтов и справочников, но нигде не могу найти решение похожей задачи.
Подскажите, как узнать ID элемента, созданного через адаптер?
Или может быть даже есть более простой способ создания и работы с таким динамическим списком?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.01.2014, 18:28     Как получить данные из EditText, созданного программно, или как узнать ID элемента?
Посмотрите здесь:

Как програмно сменить клавиатуру, или трудности при написании собственного EditText Android
Android Как программно узнать количество рабочих столов
Android Как передать данные в EditText
Android Как программно узнать ppi экрана?
Android Как сделать, чтобы данные, введенные в EditText, сохранялись и пополнялись в новом активити?
Как программно узнать глубину цвета изображения? Android
Как получить текст элемента списка? Android
Программно создать EditText Android
Как получить значение, введенное пользователем в EditText, созданного программно? Android
Android Как получить значение из программно созданных Edit-ов?
Android Убрать примененный к EditText метод setOnFocusChangeListener программно
Android Изменить свойства программно созданного элемента

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
angryrobot
Командир зеленых роботов
 Аватар для angryrobot
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
01.01.2014, 20:56     Как получить данные из EditText, созданного программно, или как узнать ID элемента? #2
Цитата Сообщение от marvitalik Посмотреть сообщение
Как получить значение, введенное пользователем в 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
package com.example.test;
 
import java.util.ArrayList;
 
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.EditText;
 
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //В этом списке будем хранить наши EditText
        ArrayList<EditText> EditTextList = new ArrayList<EditText>();
        //В этом Layout'е будем отображать наши EditText
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        setContentView(ll);
        //Создаем например пять EditText и добавляем их в список
        for (int i=0 ; i<=5 ; i++) { 
            EditTextList.add(new EditText(this));
        }
        // Устанавливаем текст для каждого EditText
        // и добавлеяем каждый EditText в LinearLayout
        for (EditText et : EditTextList) { 
            et.setText("Test:" + et.hashCode());
            ll.addView(et);
        }
        //считываем текст который отображается в каждом EditText
        for (EditText et : EditTextList) { 
            System.out.println(et.getText());
        }
    }
}
marvitalik
0 / 0 / 0
Регистрация: 01.01.2014
Сообщений: 9
01.01.2014, 21:28  [ТС]     Как получить данные из EditText, созданного программно, или как узнать ID элемента? #3
Большое спасибо! Похоже на то что надо,
вечерком буду внедрять под себя, отпишусь как получится

Добавлено через 13 минут
Боюсь что не все так просто будет...
если нужно считать вновь введенные данные, а не введенные программно, то придется как-то заходить в ArrayList и перебирать его элементы EditText.
Попробую чуть позже, щас нет возможности, но боюсь что опять зайду в тот же тупик.
angryrobot
Командир зеленых роботов
 Аватар для angryrobot
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
01.01.2014, 22:01     Как получить данные из EditText, созданного программно, или как узнать ID элемента? #4
Кстати если вам это так принципиально, можно задать ID программно после создания EditText'а.
У него есть метод с говорящим названием setId (int id)
marvitalik
0 / 0 / 0
Регистрация: 01.01.2014
Сообщений: 9
02.01.2014, 04:37  [ТС]     Как получить данные из EditText, созданного программно, или как узнать ID элемента? #5
Вроде разобрался, сделал все без адаптеров и ArrayList-ов.
Спасибо за наведение на мысль насчет программного создания LinearLayout и ручной установки Id.
Окончательно еще не доделал извлечение введенных данных, но думаю уже должно получится.
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
public class Rashod extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String[] TextViewList = { "Text1", "Text2", "Text3" };
        TextView[] tv = new TextView[TextViewList.length];
        EditText[] et = new EditText[TextViewList.length];
        LinearLayout[] row = new LinearLayout[TextViewList.length];
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        setContentView(ll);
        for (int i=0 ; i < TextViewList.length ; i++) {
            row[i] = new LinearLayout(this);
            row[i].setOrientation(LinearLayout.HORIZONTAL);
            tv[i] = new TextView(this);
            et[i] = new EditText(this);
            tv[i].setText(TextViewList[i]);
            et[i].setText(null);
            et[i].setId(i);
            row[i].addView(tv[i]);
            row[i].addView(et[i]);
            ll.addView(row[i]);
        }
    }
}
Zeban
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 1
16.12.2014, 17:58     Как получить данные из EditText, созданного программно, или как узнать ID элемента? #6
Похожая ситуация, помогите пожалуйста.
Вот мой CursorAdapter:

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
class TratiSimpleCursorAdapter extends SimpleCursorAdapter { 
Context ctx; 
DataBaseHelper db;
 
public TratiSimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) { 
    super(context, layout, c, from, to, flags); 
    this.ctx=context; 
} 
 
@SuppressLint("CutPasteId")
@Override 
public void bindView(View view, Context context, Cursor cursor) { 
    db = new DataBaseHelper(null);
    db.openDataBase();
 
    String name = cursor.getString(cursor.getColumnIndex(DataBaseHelper.COLUMN_TRATI_NAME)); 
    int stoimost = cursor.getInt(cursor.getColumnIndex(DataBaseHelper.COLUMN_TRATI_STOIMOST)); 
    TextView formname = (TextView) view.findViewById(R.id.tv_organizer_trati_listitem_name); 
    EditText formstoimost = (EditText) view.findViewById(R.id.et_organizer_trati_listitem_info); 
    int id = cursor.getInt(cursor.getColumnIndex(DataBaseHelper.COLUMN_TRATI_ID));
    formname.setText(name);             
    formstoimost.setText("" + stoimost); 
    
    formstoimost.setOnKeyListener( new View.OnKeyListener() { 
        public  boolean onKey ( View v ,  int keyCode ,  KeyEvent  event )  { 
            if(v != null) {
                Object obj = v.getTag();
                if(obj != null && obj instanceof Integer) {
                    if(event.getAction() == KeyEvent.ACTION_DOWN && 
                            (keyCode == KeyEvent.KEYCODE_ENTER)){
                    // открываем подключение к БД
                    db = new DataBaseHelper(null);
                    db.openDataBase();
                    Log.d(MainActivity.TAG, "Edit Text изменен, пункт = " + obj + " клавиши = " + keyCode );
                    if (!formstoimost.getText().toString().equals("")){                 {
                    // если есть текст
                        int newStoimost = Integer.parseInt(formstoimost.getText().toString());
                        db.addRecTratiStoimost(((Integer)obj).intValue(), newStoimost);
                        Log.d(MainActivity.TAG, "Edit Text изменен, пункт = " + obj + "        " );
                    }
                    }
                        }
                        db.close();
              return true;
            
        } 
            }
            return false;
            }
    });
Object obj = cursor.getInt(cursor.getColumnIndex("_id"));
formstoimost.setTag(obj);
db.close();
} 
}
Не знаю как считать данные введенные пользователем сразу, с занесением их в БД.
Ругается на любое обращение formstoimost.getText().toString() внутри OnKeyListener.
Yandex
Объявления
16.12.2014, 17:58     Как получить данные из EditText, созданного программно, или как узнать ID элемента?
Ответ Создать тему
Опции темы

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