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

Многократное использование Custom View - как - Android

Восстановить пароль Регистрация
 
bertrand
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 4
23.11.2016, 20:01     Многократное использование Custom View - как #1
Привет всем, я новичок в андроид с опытом Java и Flash, и после пары дней бития головой об стену решил попросить помощи и совета.

Итак, я хочу создать кастомный виджет, в котором будет например EditText и пара кнопок, и в коде активности/фрагмента создать например 5 таких виджетов, наполнить данными и разместить их на экране.

В Java или например ActionScript я бы создал нужное количество объектов класса и вызвал бы для каждого метод для добавления их во вьюху. Если же я пытаюсь создать два экземпляра CustomWidget в коде активности и потом сделать каждому mainView.addView(widgetInstance) то ничего не получается. Я видимо не понимаю какой-то важной концепции Android и мне все время во всех примерах видится, что Layout в xml описан фиксированный, а примеры про кастомные виджеты сами себя инфлейтят в родителей в init.

Может быть нужно какой-то контейнер специальный сделать сначала? Или кроме создания экземпляра класса нужно как-то его где-то связать с представлением xml?

Помогите пожалуйста разобраться и/или подскажите материал по философии отношений xml и java в управлении виджетами. Можно даже толковую статью или книгу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2016, 20:01     Многократное использование Custom View - как
Посмотрите здесь:

Gallery and custom view Android
Android Custom view . is missing constructor used by tools
Android ViewPager как узнать текущую View
Android Как закрыть приложение из view activity?
Как обрабатывать не только View элементы Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
не спать!
1798 / 1532 / 477
Регистрация: 12.05.2014
Сообщений: 5,578
Завершенные тесты: 1
23.11.2016, 20:06     Многократное использование Custom View - как #2
код CustomWidget ?
Цитата Сообщение от bertrand Посмотреть сообщение
то ничего не получается
что это значит?
Цитата Сообщение от bertrand Посмотреть сообщение
или подскажите материал по философии отношений xml и java в управлении виджетами. Можно даже толковую статью или книгу.
в гугле забанен? там информации вагон просто, во всех уроках разбирают создание и добавление вьюшек, надо только потрудиться запрос вбить
bertrand
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 4
23.11.2016, 21:04  [ТС]     Многократное использование Custom View - как #3
Как заполнить ListView из List<String> - запросто гуглится, как создать кастомный widget - тоже, а вот чтобы во время исполнения создать и добавить несколько виджетов в активность я не справился найти, поэтому и пришел сюда. Если бы я лучше разбирался в разработке под андроид - нверняка бы нагуглил, а так я пока не понимаю, в чем моя ошибка, но мне кажется, что она не в коде, а в отсутствии понимания (см первое сообщение)

Ничего не получается - это значит, что например вот так не работает. И другие попытки тоже не приводят к результату.

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
 
        MultipleText multipleText = new MultipleText(this);
        MultipleText multipleText2 = new MultipleText(this);
        RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.main_activity);
 
        mainLayout.addView(multipleText);
        mainLayout.addView(multipleText2);
    }


Код CustomWidget может быть совершенно произвольным, я еще не решаю прикладную задачу, а только проектирую приложение, для теста вот например

Кликните здесь для просмотра всего текста
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
import android.content.Context;
import android.util.AttributeSet;
import android.widget.LinearLayout;
 
public class MultipleText extends LinearLayout {
 
    public MultipleText(Context context) {
        super(context);
        init(context);
    }
 
    public MultipleText(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }
 
    public MultipleText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init(context);
    }
 
    private void init(Context context) {
    }
}
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <TextView
        android:text="TextView 1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView" />
 
    <TextView
        android:text="TextView 2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView2" />
</LinearLayout>
OlegJV
 Аватар для OlegJV
98 / 98 / 29
Регистрация: 13.03.2016
Сообщений: 447
24.11.2016, 06:27     Многократное использование Custom View - как #4
Цитата Сообщение от bertrand Посмотреть сообщение
например вот так не работает
Что имеется в виду "не работает"? Взрывается компьютер? Отключается электричество в квартире? Вместо MultipleText загружается порносайт?
Для начала вопрос - каким образом твой MultipleText должен догадаться, что представленный ниже layout - это именно его layout?
Забегу вперед - когда (если) дело дойдет до инфлатера, то команды:
Java
1
2
mainLayout.addView(multipleText);
mainLayout.addView(multipleText2);
добавят твои кастомные View одну поверх другой (ибо RelativeLayout). Так что заранее гугли LayoutParams.
P.S: А добавлять вьюшки динамически в коде обязательно? В xml никак нельзя?
Alex_Fedor
16 / 16 / 2
Регистрация: 20.01.2015
Сообщений: 132
24.11.2016, 08:05     Многократное использование Custom View - как #5
Посмотрите это
http://startandroid.ru/ru/uroki/vse-...outparams.html
и это
http://startandroid.ru/ru/uroki/vse-...ilozhenii.html
bertrand
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 4
24.11.2016, 14:24  [ТС]     Многократное использование Custom View - как #6
Спасибо всем за подсказки, сегодня буду заниматься этой задачей дальше, о результатах сообщу. Хочется чтобы если уж был задан вопрос то в конце прозвучал ответ, а от автора вопроса вообще идеальный вариант.
OlegJV
 Аватар для OlegJV
98 / 98 / 29
Регистрация: 13.03.2016
Сообщений: 447
24.11.2016, 15:16     Многократное использование Custom View - как #7
Цитата Сообщение от bertrand Посмотреть сообщение
если уж был задан вопрос то в конце прозвучал ответ
Если имеется в виду этот вопрос:
Цитата Сообщение от OlegJV Посмотреть сообщение
Что имеется в виду "не работает"?
То на него сам себе я ответить не могу.
bertrand
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 4
24.11.2016, 15:18  [ТС]     Многократное использование Custom View - как #8
Цитата Сообщение от OlegJV Посмотреть сообщение
То на него сам себе я ответить не могу.
Эх не умею я нормально выражать мысли. Я говорю что как разберусь в чем была моя оригинальная проблема отпишусь. А вовсе не вопросы которые мне задали имел в виду.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2016, 15:23     Многократное использование Custom View - как
Еще ссылки по теме:

Как программно менять View? Android
Android Warning: Custom view overrides onTouchEvent but not performClick
Public void onClick(View view) Android

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

Или воспользуйтесь поиском по форуму:
Паблито
не спать!
1798 / 1532 / 477
Регистрация: 12.05.2014
Сообщений: 5,578
Завершенные тесты: 1
24.11.2016, 15:23     Многократное использование Custom View - как #9
по минимуму, в методе MultipleText.init() не хватает строки
Java
1
inflate(context, R.layout.layout_for_this_view, this);
Yandex
Объявления
24.11.2016, 15:23     Многократное использование Custom View - как
Ответ Создать тему
Опции темы

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