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

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

Войти
Регистрация
Восстановить пароль
 
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
#1

Динамическое создание кастомного layout - Программирование Android

17.12.2014, 14:30. Просмотров 929. Ответов 10
Метки нет (Все метки)

Всем здрасте. Столкнулся с такой проблемой. Стоит задача по нажатию на динамически созданный едит текст в леяуте (с едит текстом и кнопкой внутри) переходить на другой экран, там делать манипуляции с другими едит текстами и по клику на кнопку возвращаться обратно и заполнить кликнутый едит текст данными которые были введены на форме на которую переходили. Как такое сделать ? В голову не приходит ничего умного... Помогите пожалуйста.

Добавлено через 23 минуты
Вот так я создаю леяуты
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
final LinearLayout linear = (LinearLayout) findViewById(R.id.linear);
 
        addNewEditText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                View view = getLayoutInflater().inflate(R.layout.edittext_layout, null);
                AutoCompleteTextView text = (AutoCompleteTextView) view.findViewById(R.id.edittextWhere);
                text.setId(idCounter++);
                text.addTextChangedListener(OrderTaxiActivity.this);
                text.setOnClickListener(OrderTaxiActivity.this);
                linear.addView(view);
            }
        });
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2014, 14:30     Динамическое создание кастомного layout
Посмотрите здесь:

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

Программное создание layout - Программирование Android
Впервые приходится создавать экран полностью через класс. Не могу понять, как должны привязываться компоненты: снизу вверх или сверху вниз?...

Программное создание layout и элементов - Программирование Android
Здравствуйте. У меня появилась необходимость создать полноценный layout без использования xml файлов. 1) Возможно ли загрузить layout со...

Создание кастомного View "Матрица" - Программирование Android
Здравствуйте! Взялся за написание компонента, который отображает матрицу произвольного размера. public class MatrixView extends...

Динамическое создание интерфейса - Программирование Android
Здравствуйте уважаемые. Помогите справиться с задачей. Хочу динамически создать несколько LinearLayout c TextView, ImageView и Button...

Динамическое создание View - Программирование Android
Есть шаблон: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...

Динамическое создание кнопки - Программирование Android
Добрый день, подскажите пожалуйста как программно можно создать кнопку или картинку и отобразить их на экране?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
17.12.2014, 17:36     Динамическое создание кастомного layout #2
dajver, можно попробовать startActivityForResult. По-моему самое то.

Добавлено через 1 минуту
Или можно еще вместо второй активити (той где вводить данные для EditText'a) показывать диалог, при нажатии там кнопки вызывать метод активити, который обработает введенные данные.
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
18.12.2014, 12:28  [ТС]     Динамическое создание кастомного layout #3
Цитата Сообщение от Spelcrawler Посмотреть сообщение
dajver, можно попробовать startActivityForResult. По-моему самое то.
Там пример с одним едит текстом, а как мне это привязать к кликнутому едит тексту? Что бы по клику на едит текст данные по возвращению на активность писались в нужный едит текст?

Добавлено через 34 минуты
Разобрался

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
AutoCompleteTextView selecteeelTextView;
@Override
    public void onClick(View v) {
        selecteeelTextView = (AutoCompleteTextView) v; // узнаю какой едит текст был кликнут
 
        Intent intent = new Intent(this, OrderWithMapActivity.class);
        startActivityForResult(intent, 1);
    }
 
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (data == null) { return; }
        String name = data.getStringExtra("data");
        selecteeelTextView.setText(name);
    }
Добавлено через 15 часов 15 минут
Еще один вопрос...

Теперь у меня стоит задача создать на другом экране такое же количество едит текстов сколько я создал на первом. То есть я насоздавал допустим 4 штуки, и по клику на кнопку я перехожу на другой экран и там эти же едит тексты с теми же данными что я заполнил в первом экране но немного в другом виде... То есть они выглядят иначе чем на первом экране.

Может кто знает как такое запилить?
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
18.12.2014, 12:59     Динамическое создание кастомного layout #4
По разному можно. Например отправить List, каждый элемент которого - нужная инфа для создания эдит текста и для каждого элемента создать эдит текст.
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
18.12.2014, 13:54  [ТС]     Динамическое создание кастомного layout #5
А можете привести какой то туториал для примера? Или какой то кусок кода ? А то я не совсем понимаю как это сделать...
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
18.12.2014, 14:04     Динамическое создание кастомного layout #6
Примерно так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        Intent intent = new Intent(this, SecondActivity.class);
        List<String> strings = new ArrayList<>();
        strings.add(et1.getText());//Вместо String можно добавить что угодно, лишь бы этот класс реализовывал интерфейс Serializable.
        strings.add(et2.getText());
        ....
        intent.putExtra("strings", (java.io.Serializable) strings);
        startActivity(intent);
 
        //Во второй активити, в onCreate()
        List<String> strings = getIntent().getExtras().get("strings");
        for(String str : strings){
            EditText et = new EditText(this);
            et.setText(str);
            //И добавить этот EditText куда нужно.
        }
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
18.12.2014, 14:08  [ТС]     Динамическое создание кастомного layout #7
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Java
1
2
strings.add(et1.getText());//Вместо String можно добавить что угодно, лишь бы этот класс реализовывал интерфейс Serializable.
* * * * strings.add(et2.getText());
А если я не могу их вот так считывать? у меня если вы смотрели код выше реализует один едит текст, просто множит его... Или я что то не так понимаю?
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
18.12.2014, 14:19     Динамическое создание кастомного layout #8
dajver, можно их при создании добавлять в List, можно из контейнера достать все виджеты которые в нем находятся, только если там разные виджеты (экземпляры разных классов) нужно еще отсеивать не эдит тексты. А если только они то можно так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        int childCount = container.getChildCount();
        List<EditText> eTexts = new ArrayList<>();
        for(int i = 0; i < childCount; i++){
            EditText currentEText = (EditText) container.getChildAt(i);
            eTexts.add(currentEText);
        }
        //Потом вместо обращения к каждому отдельно в цикле обходите и достаете из них то что нужно:
 
        Intent intent = new Intent(this, SecondActivity.class);
        List<String> strings = new ArrayList<>();
        for(EditText eText : eTexts){
            String text = String.valueOf(eText.getText());
            strings.add(text);
        }
        intent.putExtra("strings", (java.io.Serializable) strings);
        startActivity(intent);
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
18.12.2014, 23:59  [ТС]     Динамическое создание кастомного layout #9
Спасибо за ответ, но я сделал немного иначе чем вы сказали) Поговнокодил, но сделал так как понимаю и так работает как я хотел)
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
03.01.2015, 20:46  [ТС]     Динамическое создание кастомного layout #10
Возвращаясь к этой теме. Теперь у меня возник намного сложней вопрос...

Есть экран на котором динамически создаются кнопки к которым нужно привязать динамически создающийся список. И потом по нажатию на совершенно иную кнопку нужно создавать в активном списке записи.

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

Собственно вопрос в том как привязать список к кнопке и заполнять каждый созданный список по отдельности разными данными?

Такое вообще можно сделать? Потому что мне кажется что нет) Мой мозг просто ломается от всего этого. В приложении скрин как это выглядит...
Миниатюры
Динамическое создание кастомного layout  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2015, 12:42     Динамическое создание кастомного layout
Еще ссылки по теме:

Динамическое создание интерфейса - Программирование Android
Уважаемые форумчане, не подскажите как можно реализовать создание интерфейса в активити по переданному приложению xml-файлу, чтобы...

Динамическое создание объекта - Программирование Android
Всем привет! Заранее извиняюсь за глупый вопрос. Подскажите, пожалуйста, кто знает, как можно динамически создать кнопку в Android? Я...

Динамическое создание динамических обьектов - Программирование Android
Пишу игру. Есть уровни. В каждом уровне заданное количество обьектов-соперников. Есть класс Соперник, который содержит функции...

Динамическое создание и заполнение ViewPager - Программирование Android
Как во всех читалках реализован перенос текста? Как мне динамически создать WebView и на него вывести текст с переносом на следующую...

Динамическое создание элементов со стилями - Программирование Android
Существует набор стилей : &lt;style name=&quot;once_items_yr&quot;&gt; &lt;item name=&quot;android:background&quot;&gt;#fff&lt;/item&gt; &lt;item...


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

Или воспользуйтесь поиском по форуму:
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
04.01.2015, 12:42  [ТС]     Динамическое создание кастомного layout #11
В общем немного поговнокодив вечером я все таки смог
Цитата Сообщение от dajver Посмотреть сообщение
привязать список к кнопке и заполнять каждый созданный список по отдельности разными данными
Но теперь встает вопрос как мне сделать что бы я мог по возвращению на нужный мне шаг изменять эти данные, удалять, добавлять ?) Вот сейчас у меня код выглядит так:
Кликните здесь для просмотра всего текста
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
public class RecTourFragment  extends Fragment {
 
    private int counter = 0;
    private List<ListView> allEds;
    private ListView list;
    private ArrayList<String> listItems;
    private ArrayAdapter<String> adapter;
 
    public RecTourFragment() { }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
 
        final View rootView = inflater.inflate(R.layout.fragment_rec_tour, container, false);
 
        allEds = new ArrayList<ListView>();
 
        counter++;
        createButtons(rootView);
        createListView(rootView);
 
        Button nextBtn = (Button) rootView.findViewById(R.id.nextBtn);
        nextBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                counter++;
 
                createButtons(rootView);
                createListView(rootView);
            }
        });
 
        Button recBtn = (Button) rootView.findViewById(R.id.recBtn);
        recBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                listItems.add("Audio- : " + counter);
                adapter.notifyDataSetChanged();
            }
        });
 
        return rootView;
    }
 
    private void createButtons(View view) {
        LinearLayout layout = (LinearLayout) view.findViewById(R.id.buttonsView);
        layout.setOrientation(LinearLayout.HORIZONTAL);
        Button btn = new Button(getActivity());
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(v.getId() == allEds.get(v.getId() - 1).getId()) {
                    for(int i = 0; i < allEds.size(); i++) {
                        allEds.get(i).setVisibility(View.GONE);
                    }
                    allEds.get(v.getId() - 1).setVisibility(View.VISIBLE);
                }
            }
        });
        btn.setId(counter);
        btn.setText("" + counter);
        layout.addView(btn);
    }
 
    private void createListView(View view) {
        LinearLayout layout = (LinearLayout) view.findViewById(R.id.listviewView);
        layout.setOrientation(LinearLayout.VERTICAL);
        list = new ListView(getActivity());
        list.setId(counter);
        allEds.add(list);
        layout.addView(list);
 
        listItems = new ArrayList<String>();
        adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, listItems);
        list.setAdapter(adapter);
 
        for(int i = 0; i < allEds.size(); i++) {
            allEds.get(i).setVisibility(View.GONE);
        }
        list.setVisibility(View.VISIBLE);
    }
}


Пока что тут создается кнопка с списком, и создается массив в который заносим данные каждое нажатие на кнопку создать, но вот он создается, а когда я хочу отредактировать предыдущий список, то он не редактируется так как доступа к нему у меня нет... Может есть какое-то решение что бы можно было создавать массивы так что бы можно было возвращаться и редактировать их?
Yandex
Объявления
04.01.2015, 12:42     Динамическое создание кастомного layout
Ответ Создать тему
Опции темы

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