Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В чем разница (View view) и (View v) - Программирование Android
Я только начинаю изучать программирование под андроид (до этого вобще программированием не занимался), по гуглу удалось найти только...

8
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
23.11.2016, 20:06 #2
код CustomWidget ?
Цитата Сообщение от bertrand Посмотреть сообщение
то ничего не получается
что это значит?
Цитата Сообщение от bertrand Посмотреть сообщение
или подскажите материал по философии отношений xml и java в управлении виджетами. Можно даже толковую статью или книгу.
в гугле забанен? там информации вагон просто, во всех уроках разбирают создание и добавление вьюшек, надо только потрудиться запрос вбить
0
bertrand
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 4
23.11.2016, 21:04  [ТС] #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>
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
24.11.2016, 06:27 #4
Цитата Сообщение от bertrand Посмотреть сообщение
например вот так не работает
Что имеется в виду "не работает"? Взрывается компьютер? Отключается электричество в квартире? Вместо MultipleText загружается порносайт?
Для начала вопрос - каким образом твой MultipleText должен догадаться, что представленный ниже layout - это именно его layout?
Забегу вперед - когда (если) дело дойдет до инфлатера, то команды:
Java
1
2
mainLayout.addView(multipleText);
mainLayout.addView(multipleText2);
добавят твои кастомные View одну поверх другой (ибо RelativeLayout). Так что заранее гугли LayoutParams.
P.S: А добавлять вьюшки динамически в коде обязательно? В xml никак нельзя?
0
Alex_Fedor
32 / 32 / 5
Регистрация: 20.01.2015
Сообщений: 230
24.11.2016, 08:05 #5
Посмотрите это
http://startandroid.ru/ru/uroki/vse-...outparams.html
и это
http://startandroid.ru/ru/uroki/vse-...ilozhenii.html
0
bertrand
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 4
24.11.2016, 14:24  [ТС] #6
Спасибо всем за подсказки, сегодня буду заниматься этой задачей дальше, о результатах сообщу. Хочется чтобы если уж был задан вопрос то в конце прозвучал ответ, а от автора вопроса вообще идеальный вариант.
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
24.11.2016, 15:16 #7
Цитата Сообщение от bertrand Посмотреть сообщение
если уж был задан вопрос то в конце прозвучал ответ
Если имеется в виду этот вопрос:
Цитата Сообщение от OlegJV Посмотреть сообщение
Что имеется в виду "не работает"?
То на него сам себе я ответить не могу.
0
bertrand
0 / 0 / 0
Регистрация: 23.11.2016
Сообщений: 4
24.11.2016, 15:18  [ТС] #8
Цитата Сообщение от OlegJV Посмотреть сообщение
То на него сам себе я ответить не могу.
Эх не умею я нормально выражать мысли. Я говорю что как разберусь в чем была моя оригинальная проблема отпишусь. А вовсе не вопросы которые мне задали имел в виду.
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
24.11.2016, 15:23 #9
по минимуму, в методе MultipleText.init() не хватает строки
Java
1
inflate(context, R.layout.layout_for_this_view, this);
0
24.11.2016, 15:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2016, 15:23
Привет! Вот еще темы с ответами:

Public void onClick(View view) - Программирование Android
Не работает public void onClick(View view) :wall: public class MainActivity extends AppCompatActivity implements View.OnClickListener...

View вытесняет другое view из activity - Программирование Android
После второго EditText должна располагаться кнопка. Но почему-то этот второй EditText выпихивает ее из activity. Что не так?

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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