Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 4

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

23.11.2016, 20:01. Показов 1115. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем, я новичок в андроид с опытом Java и Flash, и после пары дней бития головой об стену решил попросить помощи и совета.

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

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

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

Помогите пожалуйста разобраться и/или подскажите материал по философии отношений xml и java в управлении виджетами. Можно даже толковую статью или книгу.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.11.2016, 20:01
Ответы с готовыми решениями:

Как создавать custom view компоненты с функционалом и присваивать им id?
Доброго времени суток) В моём приложении присутствует кнопка, для которой я хочу реализовать следующие действия: 1) Создать...

Gallery and custom view
Пытаюсь разобраться с функционалом Gallery. Несмотря на то, что документация твердит, что возможно добавление своих кастомных вью, т.е....

Custom view . is missing constructor used by tools
Здравствуйте! В общем, такая проблема: после того, как в конструкторе класса дописал еще один параметр, кроме Context, появился вот такой...

8
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
23.11.2016, 20:06
код CustomWidget ?
Цитата Сообщение от bertrand Посмотреть сообщение
то ничего не получается
что это значит?
Цитата Сообщение от bertrand Посмотреть сообщение
или подскажите материал по философии отношений xml и java в управлении виджетами. Можно даже толковую статью или книгу.
в гугле забанен? там информации вагон просто, во всех уроках разбирают создание и добавление вьюшек, надо только потрудиться запрос вбить
0
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 4
23.11.2016, 21:04  [ТС]
Как заполнить 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>
0
 Аватар для OlegJV
104 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 474
24.11.2016, 06:27
Цитата Сообщение от bertrand Посмотреть сообщение
например вот так не работает
Что имеется в виду "не работает"? Взрывается компьютер? Отключается электричество в квартире? Вместо MultipleText загружается порносайт?
Для начала вопрос - каким образом твой MultipleText должен догадаться, что представленный ниже layout - это именно его layout?
Забегу вперед - когда (если) дело дойдет до инфлатера, то команды:
Java
1
2
mainLayout.addView(multipleText);
mainLayout.addView(multipleText2);
добавят твои кастомные View одну поверх другой (ибо RelativeLayout). Так что заранее гугли LayoutParams.
P.S: А добавлять вьюшки динамически в коде обязательно? В xml никак нельзя?
0
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279
24.11.2016, 08:05
Посмотрите это
http://startandroid.ru/ru/urok... arams.html
и это
http://startandroid.ru/ru/urok... henii.html
0
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 4
24.11.2016, 14:24  [ТС]
Спасибо всем за подсказки, сегодня буду заниматься этой задачей дальше, о результатах сообщу. Хочется чтобы если уж был задан вопрос то в конце прозвучал ответ, а от автора вопроса вообще идеальный вариант.
0
 Аватар для OlegJV
104 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 474
24.11.2016, 15:16
Цитата Сообщение от bertrand Посмотреть сообщение
если уж был задан вопрос то в конце прозвучал ответ
Если имеется в виду этот вопрос:
Цитата Сообщение от OlegJV Посмотреть сообщение
Что имеется в виду "не работает"?
То на него сам себе я ответить не могу.
0
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 4
24.11.2016, 15:18  [ТС]
Цитата Сообщение от OlegJV Посмотреть сообщение
То на него сам себе я ответить не могу.
Эх не умею я нормально выражать мысли. Я говорю что как разберусь в чем была моя оригинальная проблема отпишусь. А вовсе не вопросы которые мне задали имел в виду.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
24.11.2016, 15:23
по минимуму, в методе MultipleText.init() не хватает строки
Java
1
inflate(context, R.layout.layout_for_this_view, this);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.11.2016, 15:23
Помогаю со студенческими работами здесь

Warning: Custom view overrides onTouchEvent but not performClick
У меня есть кастомный view который перегружает onTouchEvent следующим образом. На котором и висит варнинг. @Override public boolean...

Программно задавать layout_gravity для custom view
Добрый день. Сделал кастомную вьюху следующим образом. public class CustomView extends LinearLayout { private LinearLayout...

Как зациклить программу на многократное использование?
Есть код програмы калькулятора, надо с помощю цикла или при нажатии определенной клавиши(как умога попроще должно ето быть) заставить...

View Picklist Custom Control
Добрый день. Ребята, нужна ваша помощь или совет. решил у себя сделать кнопку пиклист. Для примера взял материал с этого примераView...

Многократное использование ChromiumConsoleMessage
Привествую. Выцепляю значения переменных из DOM с помощью вывода в консоль значения и обработки его в делфи с помощью ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru