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

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

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

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

01.01.2014, 18:28. Просмотров 2769. Ответов 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
Уважаемые программисты, очень нужна помощь. У меня имеется на форме кнопка, которая создает новый editText. Как сделать так, что бы в...

Изменить свойства программно созданного элемента - Программирование Android
Проблема. Есть карта на ней маркеры список имен маркеров можно получить layers.get(i).toString() перебрав в цикле Теперь зная имена...

Как передать данные в EditText - Программирование Android
Есть активность из которой необходимо передать данные в активити планировщика таким образом чтобы они оказались в поле EditText (строка...

Как сделать, чтобы данные, введенные в EditText, сохранялись и пополнялись в новом активити? - Программирование Android
как сделать что бы данные введенные в EditText сохранялись и пополнялись в новом активити... Идея такая: вводим текст в edittext...

Как програмно сменить клавиатуру, или трудности при написании собственного EditText - Программирование Android
Доброго времени суток, проблема такая. Я пытаюсь написать свой EditText, т.к. пишу под AndEngine и не могу использовать View. С чем я...

Как программно узнать ppi экрана? - Программирование Android
Как программно узнать ppi экрана?

Как программно узнать глубину цвета изображения? - Программирование Android
как программно узнать глубину цвета Bitmap??

Как программно узнать количество рабочих столов - Программирование Android
Подскажите функцию - метод, желательно с примером

Как получить значение из программно созданных Edit-ов? - Программирование Android
public class MainActivity extends Activity implements OnClickListener { private EditText text1,text2; private int...

Программно создать EditText - Программирование Android
Ребят, как сделать так, что бы при нажатие появлялась не одна EditText, а что бы количество EditText соответствовало количеству нажатий на...

Убрать примененный к EditText метод setOnFocusChangeListener программно - Программирование Android
Есть массив - masLinnerov. Есть view - EditText. Каждый раз, как EditText в фокусе - в массив добавляется новый EditText . Я нахожу...

Как получить текст элемента списка? - Программирование Android
как получить текст элемента списка, этот текст находится в TextView в разметке элемента. А получить текст нужно в обработчике нажатия...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Командир зеленых роботов
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 элемента?
Ответ Создать тему
Опции темы

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