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

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

Войти
Регистрация
Восстановить пароль
 
bertrand
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 4
#1

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

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

Привет всем, я новичок в андроид с опытом 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 - как
Посмотрите здесь:

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

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

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

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

Как закрыть приложение из view activity? - Программирование Android
Есть простой класс который расширяется от View в котором нужно завершить другое активити, этот View класс добавлен в основной класс с...

Как обрабатывать не только View элементы - Программирование Android
ImageView btn1 = (ImageView)findViewById(R.drawable.gorod_cveta_button1); final Animation anim1 =...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pablito
2452 / 1897 / 590
Регистрация: 12.05.2014
Сообщений: 6,698
Завершенные тесты: 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
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
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
30 / 30 / 4
Регистрация: 20.01.2015
Сообщений: 225
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
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
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 - как
Еще ссылки по теме:

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

Как рисовать текст на Canvas во View? - Программирование Android
Есть ImageView. Я делаю так: Canvas canvas; canvas = new Canvas(); canvas.drawText(&quot;Текст&quot;, 0, 0, null); А потом уже: ...

Как обратиться к свойствам View по имени? - Программирование Android
С помощью toString() можно получить имя видимо любого View Например textView.toString() Но что с этим именем можно делать? Как с...

Как выбрать View-элементы на intellij idea? - Программирование Android
открыл res &gt; layout &gt; main.xml и не могу найти form widgets на intellij idea надо переташить TextView, Button, checkbox и тд


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

Или воспользуйтесь поиском по форуму:
Pablito
2452 / 1897 / 590
Регистрация: 12.05.2014
Сообщений: 6,698
Завершенные тесты: 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 - как
Ответ Создать тему
Опции темы

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