2014-08-29 173 views
0

我想以編程方式將線性佈局項添加到按鈕單擊上的父網格佈局。以編程方式將線性佈局項添加到網格佈局

所以我第一次點擊,網格佈局應該是這樣的:

TextView Button 

二時間:

TextView Button TextView Button 

第三次:

TextView Button TextView Button TextView Button 

但什麼是實際發生的情況是:

第一次:

TextView Button 

第二時間:

TextView Button Button 

第三時間:

TextView Button Button Button 

即現有文字視圖值被更新和新的按鈕被添加每一次。我究竟做錯了什麼?

這是父佈局 - fragment_add.xml:

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
    <android.support.v7.widget.GridLayout 
     xmlns:grid="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/grdl_reminders" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     grid:columnCount="5" /> 
</ScrollView> 

這是該項目的佈局 - item_reminder.xml:

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

    <TextView 
     android:id="@+id/txt_reminder" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="2" /> 

    <Button 
     android:id="@+id/btn_cancelreminder" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:minHeight="0dp" 
     android:minWidth="0dp" 
     android:background="@null" 
     android:text="X" 
     android:layout_weight="1" 
     /> 

</LinearLayout> 

在我的片段,我膨脹的項目佈局到電網點擊按鈕上的佈局。這是在onCLickListener:

GridLayout gridLayout = (GridLayout) getActivity().findViewById(R.id.grdl_reminders); 
//create new item layout 
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View v = inflater.inflate(R.layout.item_reminder, gridLayout, true); 
TextView tv_reminder = (TextView) v.findViewById(R.id.txt_reminder); 
Button btn_cancelReminder = (Button) v.findViewById(R.id.btn_cancelreminder); 
String selectedTime = "some new value"; 
tv_reminder.setText(selectedTime); 
+0

上發佈您的點擊收聽 – 2014-08-29 06:38:51

+0

代碼的最後部分是onclickListener – faizal 2014-08-29 06:40:08

+1

當最後一個參數爲真時,檢查inflater.inflate返回的內容 – pskink 2014-08-29 06:44:54

回答

2

相反附着到它在充氣法根的項目,我手動添加它的父。 即

使用false作爲第三個參數來inflate()

View v = inflater.inflate(R.layout.item_reminder, gridLayout, false); 

,並在結尾處使用addView()

gridLayout.addView(v); 
相關問題