Добавление пользовательского относительного макета в один макет одного вкладыша - PullRequest
0 голосов
/ 01 марта 2012

Я сделал следующий относительный макет в XML-файле, скажем, add_relative_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:id="@+id/addAccountLinearLayout">



</LinearLayout>

Выше приведен основной макет, в который я хочу добавить копии файла кода ниже.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/UIContainer"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

<RelativeLayout

    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white" >

    <TextView
        android:id="@+id/amountLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="5dp"
        android:text="Amount"
        android:textColor="@android:color/black"
        android:textStyle="bold" />

    <EditText
        android:id="@+id/amount"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="5dp" >

    </EditText>

У меня есть другой XML-файл Android с именем Show_all.xml.Это линейный макет xml

Я хочу добавить этот относительный макет выше столько раз, сколько я хочу в этом макете show_all

В настоящее время я использую этот код

private void callOnCreate()
      {
          linear = (LinearLayout) findViewById(R.id.addAccountLinearLayout); // the layout in which i want to make dynamic copies of this layout.
          layout = (RelativeLayout) findViewById(R.layout.ui_relative_layout_style); // name of xml File of above code.

          for (int i=0; i < 4; i++)
          {
              Account account = accountArray.get(i);
              linear.addView(layout, i);
          }   
      }

Я получаю исключение нулевой точки.Подскажите пожалуйста что делать.

С наилучшими пожеланиями

Ответы [ 2 ]

0 голосов
/ 01 марта 2012

Здравствуйте, Умар. Я понятия не имею, как вы можете использовать макет xml для добавления динамически, но вы можете использовать код ниже, чтобы добавить нужную вещь в LinearLayout

public RelativeLayout createViewTOAdd(){
    lp=new RelativeLayout.LayoutParams(android.widget.RelativeLayout.LayoutParams.FILL_PARENT,android.widget.RelativeLayout.LayoutParams.WRAP_CONTENT);
    RelativeLayout mRelativeLayout=new RelativeLayout(this);
    mRelativeLayout.setBackgroundColor(Color.WHITE);
    TextView mTextView=new TextView(this);
     RelativeLayout.LayoutParams Textview_lp=new RelativeLayout.LayoutParams(android.widget.RelativeLayout.LayoutParams.WRAP_CONTENT,android.widget.RelativeLayout.LayoutParams.WRAP_CONTENT);
    mTextView.setText("Amout");
    Textview_lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
    Textview_lp.addRule(RelativeLayout.CENTER_VERTICAL);
    Textview_lp.leftMargin=10;
    mTextView.setTextColor(Color.BLACK);
    mTextView.setTextAppearance(this, R.style.TextStyle);
    //mTextView.setLayoutParams(Textview_lp);
    EditText mEditText=new EditText(this);
     RelativeLayout.LayoutParams EditText_param=new RelativeLayout.LayoutParams(android.widget.RelativeLayout.LayoutParams.WRAP_CONTENT,android.widget.RelativeLayout.LayoutParams.WRAP_CONTENT);
     EditText_param.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
     EditText_param.addRule(RelativeLayout.CENTER_VERTICAL);
     EditText_param.rightMargin=10;
    //mEditText.setLayoutParams(EditText_param);
    //mRelativeLayout.addView(mTextView, 0);
    //mRelativeLayout.addView(mEditText, 1);
    //mRelativeLayout.addView(mTextView);
    //mRelativeLayout.addView(mEditText);
    mRelativeLayout.addView(mTextView, Textview_lp);
    mRelativeLayout.addView(mEditText, EditText_param);
    return mRelativeLayout;
}

Теперь Как добавить View в LinearLayout ниже

    mLinearLayout=(LinearLayout)findViewById(R.id.mainLinearView);

    mLinearLayout.removeAllViews();

   for(int i=0;i<4;i++){
        mLinearLayout.addView(createViewTOAdd(), i);
    }
0 голосов
/ 01 марта 2012

Привет, вы используете findViewById для получения экземпляра относительного слоя, который недоступен в вашем текущем макете. Show_all.xml. Вот почему вы получаете исключение нулевого указателя. Создайте отдельный макет для этого конкретного относительного слоя и назовите этот файл макета XML как UIContianer, то попробуйте использовать ниже код

private void callOnCreate()
      {
          linear = (LinearLayout) findViewById(R.id.addAccountLinearLayout); // the layout in which i want to make dynamic copies of this layout.

 LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
 View vi = inflater.inflate(R.layout.ui_relative_layout_style, null);
          for (int i=0; i < 4; i++)
          {
              Account account = accountArray.get(i);
              linear.addView(vi, i);
          }   
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...