2015-06-25 3 views
0

я назвал метод компоновки грима, который принимает входную метку и вводКак добавить представление в виде линейной компоновки динамически

public void makeLayout(String label, String inputType) { 

    Toast.makeText(getApplicationContext(), label + " " + inputType, 
      Toast.LENGTH_SHORT).show(); 

    LayoutInflater vi = (LayoutInflater) getApplicationContext() 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View v = vi.inflate(R.layout.activity_main, null); 

    // fill in any details dynamically here 
    TextView textView = (TextView) v.findViewById(R.id.textView1); 
    textView.setText("your text"); 

    // insert into main view 
    ViewGroup insertPoint = (ViewGroup) findViewById(R.id.AdvancedCatalogContainer); 
    insertPoint.addView(v, 0, new ViewGroup.LayoutParams(
      ViewGroup.LayoutParams.FILL_PARENT, 
      ViewGroup.LayoutParams.FILL_PARENT)); 

} 

теперь на основе входного аргумента типа, я хочу, чтобы добавить вида в деятельности макета main (внутри любой линейной компоновки). Я вызывал этот метод несколько раз, но хочу отображать сразу все представления, когда динамически создается весь макет. Какой подход должен быть там? Я хочу добавить одну вещь, которая делает метод макета основной деятельности вызывается из асинхронной задачи. Мне нужно ваше ценное предложение, поскольку я новичок в технологии Android.

ответ

4

Во-первых, вы должны ознакомиться с java (на мой взгляд).

1) объявить линейный макет при компоновке XML. как:

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

2) Получить Referance эту точку зрения:

private LinearLayout rootView=findViewById(R.id.AdvancedCatalogContainer); 

3) Объявить метод, как это:

public void fillLayout(LinearLayout root,TextView v){ 
    v.setText("your text") 
    root.addView(v); 
} 

4) Вызвать этот метод в OnCreate метод или в любом месте в нитке.

... extends AsycTask<blah,blah,blah>{ 
onPostExecute(blah){ 

    for(many times){ 

    fillLayout(linearLayout,textView); 

    } 

} 

Редактировать

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

+0

еще одно сомнение - это обновление макета каждый раз, когда я добавляю представление. Как добавить все представления в корневой макет при одном обновлении. Надеюсь, ты получишь то, что я хочу сказать. – Killer

+1

Нет, это добавит новую линию к вашей линейной компоновке. Вы можете вызвать root.removeAllViews(); чтобы освежить ваш взгляд – Ercan

+0

Получил это спасибо. И его работа. – Killer

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