2013-10-13 44 views
0

我想做4列動態更改數據行。我會用LinearLayout來做到這一點,但我找不到一個好方法來獲得一組4 x textview。這是名爲.java其trowing在底部列出一個致命的錯誤:TableLayout中的TextView數組

public class DebtList extends Activity { 

Integer trigger = 5; 
Double totalDebt = 0.00; 

@TargetApi(Build.VERSION_CODES.HONEYCOMB) 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.debtlist); 

    //Bundle extras = getIntent().getExtras(); 

    String[] debtNames = new String[10]; 
    Double[] debtAmount = new Double[10]; 
    Double[] debtRate = new Double[10]; 
    Double[] debtTerm = new Double[10]; 

    Integer stopper = trigger+1; 

    TableLayout tl=(TableLayout)findViewById(R.id.debtlist); 
    TableRow tr1 = new TableRow(this); 
    TextView textview = new TextView(this); 

    for(int i=0; i<stopper; i++) 
    { 

     tr1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
     tr1.setId(i); 

     textview.setText("" + i); 
     tr1.addView(textview); 
     tl.addView(tr1, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 

     tr1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT)); 
     tr1.setId(i); 

    } 

    trigger++; 
} 
} 

我有一個(基本)空白.XML一起工作:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/debtlist" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

</TableLayout> 

我的logcat:

10-13 04:12:07.412: E/AndroidRuntime(799): FATAL EXCEPTION: main 
10-13 04:12:07.412: E/AndroidRuntime(799): java.lang.ClassCastException: android.app.ActionBar$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.widget.LinearLayout.measureVertical(LinearLayout.java:587) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.widget.TableLayout.measureVertical(TableLayout.java:468) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.widget.TableLayout.onMeasure(TableLayout.java:431) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.view.View.measure(View.java:10828) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4351) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.widget.FrameLayout.onMeasure(FrameLayout.java:267) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.view.View.measure(View.java:10828) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.widget.LinearLayout.measureVertical(LinearLayout.java:764) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.widget.LinearLayout.onMeasure(LinearLayout.java:519) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.view.View.measure(View.java:10828) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4351) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.widget.FrameLayout.onMeasure(FrameLayout.java:267) 
10-13 04:12:07.412: E/AndroidRuntime(799): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:1890) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.view.View.measure(View.java:10828) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.view.ViewRoot.performTraversals(ViewRoot.java:909) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.view.ViewRoot.handleMessage(ViewRoot.java:2003) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.os.Handler.dispatchMessage(Handler.java:99) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.os.Looper.loop(Looper.java:132) 
10-13 04:12:07.412: E/AndroidRuntime(799): at android.app.ActivityThread.main(ActivityThread.java:4025) 
10-13 04:12:07.412: E/AndroidRuntime(799): at java.lang.reflect.Method.invokeNative(Native Method) 
10-13 04:12:07.412: E/AndroidRuntime(799): at java.lang.reflect.Method.invoke(Method.java:491) 
10-13 04:12:07.412: E/AndroidRuntime(799): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
10-13 04:12:07.412: E/AndroidRuntime(799): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
10-13 04:12:07.412: E/AndroidRuntime(799): at dalvik.system.NativeStart.main(Native Method) 

如果有人有任何更有效的方法來獲取基於用戶輸入的數據量顯示的4X1-10組TextViews,請讓我知道。

而且我使用API​​級12

回答

1

在日誌中:

ClassCastException異常:android.app.ActionBar $的LayoutParams不能轉換 到android.widget.LinearLayout $的LayoutParams

表示您正在導入ActionBar.LayoutParams用於將LayoutParams設置爲TableLayout和按鈕,因此使用LinearLayout.LayoutParams作爲:

for(int i=0; i<stopper; i++) 
    { 

    tr1.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 
                LayoutParams.WRAP_CONTENT)); 
     //..... 
    tr1.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 
                LayoutParams.WRAP_CONTENT))); 
    tr1.setId(i); 

    } 
+0

仍然只有垂直或水平取決於我如何設置LL。 – jpgerb

0

因爲您正在使用表佈局和充氣ActionBar線性佈局的上下文,您正在獲取類轉換異常。

java.lang.ClassCastException:android.app.ActionBar $的LayoutParams不能轉換到android.widget.LinearLayout $的LayoutParams

是有辦法4列每行的X條記錄?

爲此使用自定義佈局並使用它。

for(int i=0; i<stopper; i++) 
    { 

     // Inflate your row "template" and fill out the fields. 
    TableRow row = (TableRow)LayoutInflater.from(context).inflate(R.layout.attrib_row, null); 
    ((TextView)row.findViewById(R.id.attrib_name)).setText(b.NAME); 
    ((TextView)row.findViewById(R.id.attrib_value)).setText(b.VALUE); 
    table.addView(row); 

    } 
相關問題