2014-12-11 3 views
0

У меня проблема с преобразованием .xml-файлов в Java. Я попытался, но не смог завершить. Мне нужно, чтобы кто-нибудь помог заполнить его. Нужна помощь! Заранее спасибо.Преобразование файлов макета в Java в android

Вот мой макет .xml файла:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/lay" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <CheckBox android:id="@+id/checkbox_cheese" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/cheese" 
     android:onClick="onCheckboxClicked"/> 
</LinearLayout> 

Я просто хочу, чтобы преобразовать его в Java, который я пытался до сих пор:

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.lay); 
    CheckBox box = new CheckBox(this); 
    box.setId(c); 
    /* from here how to convert those below lines in Java   
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/cheese" 
     android:onClick="onCheckboxClicked" 
    */ 
+2

Вы пытались обратиться к официальным учебникам, которые объясняют, как раздувать представления? – Egor

+0

Нет, сэр, я просто хочу просто сделать это. См. Мой отредактированный код sir. :) –

+1

Я не хочу быть грубым, но это место, чтобы помочь вам разобраться в решениях ваших проблем, а не просить других людей делать вашу работу за вас. –

ответ

1

У меня хорошее настроение, или я бы просто указал вам на комментарий Егора; учебные пособия предназначены для того, чтобы показать вам эффективные способы делать то, что вы хотите.

LinearLayout.LayoutParams boxParams = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
box.setLayoutParams(boxParams); 
box.setText(R.string.cheese); 

// if you want checkbox change listener 
box.setOnCheckedChangedListener(new OnCheckedChangedListener(){ 
    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) { 
     if (isChecked){ 
      // perform logic 
     } 
    } 
}; 

// if you want on click listener functionality 
box.setOnClickListener(new OnClickListener(){ 
    @Override 
    public void onClick(View v){ 
     // perform logic 
    } 
} 

linearLayout.addView(box); 

не проверял, не знаю, если это ошибка бесплатно (возможно, что-то пропустил или сделал что-то неправильно), но я могу вам сказать, что если вы не планируете делать только эту функцию и никакой другой функциональность, которую ВАЖНО нужно прочитать в основах Android.

+0

Nice подробности ответ. Несколько мыслей: 'setText()' принимает ресурсы напрямую - нет необходимости получать строку. то есть 'box.setText (R.string.cheese)'. Более читаемая ИМО. Также установка 'OnClickListener' неявно устанавливает' View' для кликабельности, делая явный вызов избыточным. –

+0

@ zgc7009 Спасибо sir , но я получаю nullpointerException здесь linearLayout.addView (box); Кроме того, я удаляю флажок в файле xml –

+0

@ItaiHanski все хорошие моменты, я отредактирую.Благодаря :) – zgc7009

0
android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

-> setLayoutParams (..)

android:text="@string/cheese" 

-> setText (..)

android:onClick="onCheckboxClicked" 

-> setOnClickListener (..)

+0

Sir в setLayoutParams (..) что я должен писать для «wrap_content» и в setOnClickListener (..) что я должен писать внутри? –

+2

@RazilKala Тот факт, что вы должны задать эти вопросы, составляет 100%, почему люди говорят вам, что вы должны прочитать учебники. Этот материал - Android 101. – zgc7009

0

ли что-то вроде этого:

View layout = ViewInflater.from(this).inflate(R.layout.layout, null); //your layout name 

LinearLayout linearLayout = (LinearLayout) layout.findViewById(R.id.lay); 
CheckBox box = (CheckBox) layout.findViewById(R.id.checkbox_cheese); 

box Теперь объект будет иметь все свойства, заданные в XML.

+0

На самом деле, сэр, я не хочу использовать findViewByID checkbox Я хочу создать его в java и установить его атрибуты в java. –

+0

Очень хорошо, но вы должны сделать это так, это правильный способ Android. – Kelevandos

Смежные вопросы