Страница 1 из 1

Создание класса java

Добавлено: 20 июн 2015, 19:51
emmure
Здравствуйте, хотел создать класс с 3 аргументами (LinearLayout, ImageView,EditText)

Код: Выделить всё

class obLayout extends Activity
{
    LinearLayout linLayout;
    ImageView imgNew;
    EditText edText;
    obLayout (EditText edText)
    {
        this.linLayout = new LinearLayout(this);
        this.linLayout.setOrientation(LinearLayout.VERTICAL);
        this.imgNew =  new ImageView(this);
        this.imgNew.setImageDrawable(getResources().getDrawable(R.drawable.ic_alarm_on_black_36dp));
        this.edText = new EditText(this);
        this.edText.setText(edText.getText().toString());
        this.linLayout.addView(imgNew);
        this.linLayout.addView(edText);
    }

}
По сути это LinearLayout внутри которого картинка и текст
Но при создании элемента класса приложение завершается ошибкой

Код: Выделить всё

  
obLayout myLayout = new obLayout(etTime);//etTime - переменная типа EditText

Re: Создание класса java

Добавлено: 21 июн 2015, 13:27
rezak90
Что то такой бред написан))) Зачем наследоваться от активити то?

Re: Создание класса java

Добавлено: 21 июн 2015, 17:31
emmure
Если честно, я понимаю что ерунда написана, т.к не могу до конца разобраться. Насколько я понимаю, в конструкторе надо выделить память при создании переменных linLayout,imgNew и edText. Но я не до конца понимаю эту конструкцию в java , а именно this.linLayout = new LinearLayout(this); что значит второе this. Просто если не от чего не наследовать он будет подчёркнут. Можете объяснить или ссылку какую нибудь дать где это объяснено.

Re: Создание класса java

Добавлено: 21 июн 2015, 17:52
emmure
По итогу я пришёл к этому

Код: Выделить всё

class obLayout 
{
    LinearLayout linLayout;
    ImageView imgNew;
    EditText edText;
    obLayout (EditText edText,LinearLayout linLayout,ImageView imgNew)
    {
        this.linLayout = linLayout;
        this.linLayout.setOrientation(LinearLayout.VERTICAL);
        this.imgNew =  imgNew;
        this.edText =  edText;
        //рамка
        TableRow.LayoutParams param = new TableRow.LayoutParams();
        this.linLayout.setBackgroundResource(R.drawable.custom_border);
        this.linLayout.addView(this.imgNew);
        this.linLayout.addView(this.edText);

    }

}
то есть память выделяю уже в основной функции, и передаю эти переменные как параметры конструктору но я не уверен что это правильно.

Re: Создание класса java

Добавлено: 22 июн 2015, 01:31
rezak90
Конечно это все не правильно, ни подход, ни конструкция... все))) Почитай что такое композитные и кастомные вью.