2013-01-03 8 views
9

मैं एंड्रॉइड के लिए नया हूं और मैं एक टेबलरो जोड़ने की कोशिश कर रहा हूं, जिसे मैंने पहले ही एक्सएमएल के साथ बनाया है, प्रोग्रामलेटिक रूप से एक टेबललेआउट में। मुझे बल बंद हो रहा है, ज्यादातर NullPointerExcpetions हैं।xml से tableLayout से TableRow को प्रोग्रामेटिक रूप से कैसे जोड़ें?

यहाँ मेरी जावा वर्ग

public class DayFragment extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.subjects_list, container, false); 


    TableLayout tl = (TableLayout) view.findViewById(R.id.tl); 
    TableRow tr = (TableRow) view.findViewById(R.id.tr_row); 

      tl.addView(tr); //not working, obviously im missing something 

    //xml parsing stuff 

      return view; 
} 
} 

है यह TableLayout के साथ अपने लेआउट है:

<?xml version="1.0" encoding="utf-8"?> 
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/horizontalScrollView1" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:paddingTop="5dp" > 

<ScrollView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:fillViewport="true" 
    android:orientation="vertical" > 

    <TableLayout 
     android:id="@+id/tl" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 

     <include 
      android:id="@+id/header" 
      layout="@layout/table_header" /> 

     <include android:id="@+id/h_divider" 
      layout="@layout/horizontal_divider"/> 




    </TableLayout> 
</ScrollView> 

</HorizontalScrollView> 

और TableRow:

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

<TextView 
    android:id="@+id/tv_hour" 
    android:layout_weight="1" 
    android:gravity="center" 
    android:padding="8dp" 
    android:textSize="15sp" 
    android:textStyle="bold" /> 

<View 
    android:layout_weight="1" 
    android:background="@drawable/vertical_cell_divider" /> 

<TextView 
    android:id="@+id/tv_subject" 
    android:layout_weight="1" 
    android:gravity="left" 
    android:padding="8dp" 
    android:textSize="18sp" /> 

<View 
    android:layout_weight="1" 
    android:background="@drawable/vertical_cell_divider" /> 

<TextView 
    android:id="@+id/tv_start" 
    android:layout_weight="1" 
    android:gravity="left" 
    android:padding="8dp" 
    android:textSize="18sp" /> 

<TextView 
    android:id="@+id/tv_bar" 
    android:layout_weight="1" 
    android:gravity="left" 
    android:textSize="18sp" /> 

<TextView 
    android:id="@+id/tv_end" 
    android:layout_weight="1" 
    android:gravity="left" 
    android:padding="8dp" 
    android:textSize="18sp" /> 

</TableRow> 

मैं इसे प्राप्त करने के लिए अलग अलग तरीके के बहुत सारे करने की कोशिश की लेकिन अभी भी कुछ नहीं।

उत्तर

9

बदलें कोड:

TableRow tr = (TableRow) view.findViewById(R.id.tr_row); 
tl.addView(tr); //not working, obviously im missing something 

साथ
View tr = inflater.inflate(R.layout.table_row_layout, null,false); 
tl.addView(tr); //not working, obviously im missing something 
+0

हाँ! मेरी समस्या को हल करने के लिए बहुत बहुत धन्यवाद। क्या आप मुझे यह भी बता सकते हैं कि एक ही दृश्य को एक से अधिक बार कैसे जोड़ना है? बच्चे के पास पहले से ही माता-पिता हैं इसलिए मैं इसे tl.addView (tr) डालकर और अधिक जोड़ नहीं सकता; – Chris95X8

+0

लूप के लिए कोड दोहराएं। लेकिन ध्यान रखें कि आपने लूप के लिए दोहराने से पहले दृश्य सरणी बनाई है। फिर सरणी में प्रत्येक दृश्य के लिए table_row_layout फुलाएं और इसे तालिका लेआउट में जोड़ें। – TNR

+0

मैं सिर्फ इस तरह यह किया है और यह काम किया के लिए (int i = 0; i <7; i ++) { \t \t \t \t \t देखें टीआर = inflater.inflate (R.layout.subject_row, अशक्त, गलत) ; \t \t tl.addView (tr); \t \t \t \t} – Chris95X8

संबंधित मुद्दे