2014-02-17 2 views
0

У меня возникли проблемы с добавлением строк с TextView внутри TableLayout.Как добавить динамический TableRow внутри TableLayout в Android с помощью .xml?

Я создал table_row.xml, где я определяю xml мой TableRow и его TextView.

table_row XML:

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


<TextView 
    android:id="@+id/textView_name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="2" 
    android:text="@string/food_label" 
    android:textAppearance="?android:attr/textAppearanceSmall" /> 

<TextView 
    android:id="@+id/textView_kcal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="@string/kcal_label" 
    android:textAppearance="?android:attr/textAppearanceSmall" /> 

</TableRow> 

Вот что я делаю:.

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

LayoutInflater inflater=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
private TableLayout tableChronology = (TableLayout) findViewById(R.id.tableLayout1); 
View tr = inflater.inflate(R.layout.table_row_chronology, null,false); 

// Here is where i get an error; 
tableChronology.addView(tr); 

Вот LogCat:

FATAL EXCEPTION: main 
Process: com.example.appscan5, PID: 31647 
java.lang.NullPointerException 
at com.example.appscan5.Today$2.onClick(Today.java:66) 
at android.view.View.performClick(View.java:4438) 
at android.view.View$PerformClick.run(View.java:18422) 
at android.os.Handler.handleCallback(Handler.java:733) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5017) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
at dalvik.system.NativeStart.main(Native Method) 
+0

Кажется, вы не имеете элемент 'R.id.tableLayout1' в вашем главном представлении. Выполните полный код класса, чтобы лучше понять проблему. – cosmincalistru

+0

Сообщение XML с основным макетом, похоже, что 'tableLayout1' там отсутствует – nikis

ответ

1

Вот что фиксированная моя проблема если кто-то заинтересован в этом.

я использовал:

private LayoutInflater inflater; 
View tr = inflater.inflate(R.layout.table_row_chronology, null); 

Вместо:

LayoutInflater inflater=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

Ниже код:

private LayoutInflater inflater; 
View tr = inflater.inflate(R.layout.table_row_chronology, null); 
TableLayout tableChronology = (TableLayout) findViewById(R.id.mainTable); 
tableChronology.addView(tr); 
0

Вы должны написать ниже код, чтобы получить его работу

private TableLayout tableChronology = (TableLayout) findViewById(R.id.tableLayout1); 
TableRow tablerow = new TableRow(this); 
View tr = inflater.inflate(R.layout.table_row_chronology, tablerow, false); 
+0

' inflate' можно назвать без контейнера, указанного также – nikis

+0

Я просто использовал его пример. Сначала проверьте его код, затем оцените ответ. – Passiondroid

+0

Это неправильный ответ, поэтому он опущен вниз – nikis

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

  • Нет связанных вопросов^_^