Как динамически загрузить linearlayout после проверки условия в файле класса? - PullRequest
1 голос
/ 23 апреля 2011

Эй, ребята, пожалуйста, помогите мне, я новичок в разработке приложений для Android

Вот сценарий: Это мой макет объявления XML-файла:

<LinearLayout xxx
         <Textview aaa>
          </TextView>
</LinearLayout>

// Ниже LinearLayout Iнеобходимо отображать, когда он удовлетворяет некоторому условию в классе Java, т.е. если (true), то отображать следующий макет, иначе не.Я могу проверить это условие только после того, как пользователь введет некоторые данные.

<LinearLayout xxx
         <Textview aaa>
                To be displayed after the condition is checked
          </TextView>
</LinearLayout>

// следующий макет отображается вместе с первым.

<LinearLayout xxx
         <Textview aaa>
          </TextView>
</LinearLayout>

Есть идеи, как это сделать?

Ответы [ 3 ]

3 голосов
/ 23 апреля 2011

Потратьте несколько минут, чтобы прочитать руководство разработчика Android.Это стоит времени: http://developer.android.com/guide/topics/ui/index.html

По сути, вы хотите использовать идентификаторы для ссылки на макет XML:

android:id="@+id/myxmlid"

и в своем Java-файле:

LinearLayout ll = findViewById(R.id.myxmlid);
if (yourCondition)
  mainLayout.add(ll);

Я предполагаю, что вы хотите добавить виджеты к текущему макету, а не просто изменить текст текущего TextView.

Кроме того, это предполагает, что выхочу добавить больше, чем просто новый TextView.Если вам нужно только это, вам не нужно заключать его в LinearLayout, который используется для добавления строк или столбцов виджетов.

1 голос
/ 23 апреля 2011

Вы не заменяете весь макет программно, просто чтобы изменить текст в одном TextView. То, как такого рода вещи обрабатываются в Android, состоит в том, чтобы включить поле в ваш класс Activity для вашего textview, а затем создать его экземпляр в вашем методе onCreate () с помощью findViewById () после того, как вы вызвали setContentView (), чтобы загрузить макет так, что вы можете получить доступ к полям и методам этого TextView.

Во-первых, вам, TextView, нужен идентификатор в макете xml.

<TextView android:id="@+id/sometext" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" />

Тогда в вашей деятельности ...

TextView mTextView;

@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);

   mTextView = (TextView) findViewById(R.id.sometext);
}

Где-то еще в программе ...

public void myMethod(){

   mTextView.setText("Text says this now");

}

Надеюсь, это поможет понять идею. Удачи!

0 голосов
/ 26 апреля 2011

Спасибо Aleadam за предложение прочитать ссылку.Follwoing был моим подходом к получению выходных данных.

Что я сделал, так это присвоил своей видимости LinearLayout значение GONE (android: Visibility = "GONE") при уменьшении XML и в программе после выполнения условиявстретил, поменял видимость на "VISIBLE".(с помощью layout.setVisibility (View.VISIBLE))

...