0

我有他的課的片段:如何動態地填充片段佈局?

public class FormatShortFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.bag_format_short, container, false); 

     return rootView; 
    } 
} 

這是他的佈局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
    </LinearLayout> 
</RelativeLayout> 

該片段由FragmentPageAdapter所示。 當用戶從服務器添加項目(項目的來源無關緊要)時,佈局將會增長,並且此項目將爲水平線性佈局,並帶有textview和edittext(item_name,item_value)。這個值是可以修改的,所以必須是一個edittext,並且這個edittext會定期從服務器接收值,所以可以自動更新。

解釋了這個之後,我該如何將這個linearLayouts和他的子視圖動態添加到GUI中?何時更新界面?

非常感謝,任何幫助都很好,我對這個主題很失望。

經過修改編輯:

我已經以這種方式修改了代碼:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.bag_format_short, container, false); 

    return rootView; 
} 
@Override 
public void onResume() { 
    super.onResume(); 
    LinearLayout parentLinear = (LinearLayout) getActivity().findViewById(R.id.short_container); 
    for (int i = 1; i<10; i++){ 
     LinearLayout innerLinear = (LinearLayout) new LinearLayout(getActivity()); 
     TextView itemName = new TextView(getActivity()); 
     itemName.setText("Nombre"); 
     EditText itemValue = new EditText(getActivity()); 
     itemValue.setText("Valor"); 
     innerLinear.addView(itemName); 
     innerLinear.addView(itemValue); 
     parentLinear.addView(innerLinear); 
    } 
} 

@Override 
public void onStart() { 
    super.onStart(); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
} 

和碎片佈局已被修改在這條路上:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin"> 

<LinearLayout 
    android:id="@+id/short_container" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
</LinearLayout> 
</RelativeLayout> 

現在佈局每次迭代都在增長。

在這一點上我有另一個問題,我希望你能幫助我。 - 如何用重力或重量等屬性生成LayouParams對象? - 如何將數據從MainActivity傳遞到片段? - 我怎樣才能強制片段視圖與新數據一起加載?

另外我需要知道如何將clickListener事件綁定到編程方式的linearLayouts中,我需要根據名稱和編輯值修改服務器上的某些值。

非常感謝你,你正在拯救我的生命。

回答

2

你可以很容易地更新按鈕點擊或任何事件的片段UI 就像活動。您可以通過

getActivity().findViewById() 

見例得到任何視圖,它會幫助你undersatand: -

public class FragmentTab3 extends SherlockFragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragmenttab3, container, false); 
     return rootView; 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
    } 


    @Override 
    public void onStart() { 
     super.onStart(); 


    LinearLayout linear = (LinearLayout) getActivity().findViewById(R.id.linear); 
     Button button = new Button(getActivity()); 
     button.setText("Click Me"); 
     linear.addView(button); 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
    } 
} 
+0

編輯問題與修改,把你的答案類似的例子。謝謝。你能幫助我解決其他問題嗎? – osanfer

0

如果要動態添加子視圖到佈局,請查看android文檔中的RecyclerView。聽起來像你在找什麼。