2016-07-04 9 views
0

Я новичок в Android. Я попытался добавить TableRows в TableLayout, но он не работает. Я понятия не имею, почему это не видно. Я попытался посмотреть из Интернета, но, похоже, моя проблема не то же самое. У меня нет исключений или erros в logcat. Я попытался отладить и выяснил, что представления добавлены, но по какой-то причине они не отображаются. Кто-нибудь имеет представление об этом? Заранее спасибо. Мой код:Программно добавлено TableRows в TableLayout не показывать

private void addInfosToTable(){ //this is called in onCreate() function 
//these are just dummy infos i want to test the how the table works 
    Cell cell = new Cell("1234",5000,3000); 
    cell.setStatus(Cell.Status.COMPLETE); 
    Cell cell1 = new Cell("1234",5000,3000); 
    cell1.setStatus(Cell.Status.FAILED); 
    addCellRowToTable(cell); 
    addCellRowToTable(cell1); 
} 

    private void addCellRowToTable(Cell cell){ 
    //init cell info 
    String cellID = cell.getCellID(); 
    double targetSpeed = cell.targetSpeed(); 
    double targetPoint = cell.targetPoint(); 
    Cell.Status status = cell.getStatus(); 

    //create tableRow 
    TableRow tableRow = new TableRow(this); 
    tableRow.addView(getTextView(cellID,true)); 
    tableRow.addView(getTextView("n.a"+"/ "+"n.a",false)); 
    tableRow.addView(getTextView(targetSpeed+"/ "+targetPoint,false)); 
    tableRow.addView(getStatusView(status)); 
    tableRow.setPadding(0,R.dimen.table_marginVertical,R.dimen.table_marginVertical,0); 
    tableRow.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.MATCH_PARENT)); 

    //add tableRow to tableLayout 
    this.cellTable.addView(tableRow); 

} 
private TextView getTextView(String text, boolean isFirst){ 
    TextView textView = new TextView(this); 
    textView.setTextSize(R.dimen.table_textSize); 
    textView.setText(text); 
    textView.setTextColor(ContextCompat.getColor(this,R.color.black)); 
    if (isFirst){ 
     textView.setPadding(R.dimen.table_marginVertical,0,0,0); 
    } 
    return textView; 

} 
private ImageView getStatusView(Cell.Status status){ 
    ImageView imageView = new ImageView(this); 
    switch (status){ 
     case COMPLETE: 
      imageView.setImageResource(R.drawable.success); 
      return imageView; 
     default: 
      imageView.setImageResource(R.drawable.failed); 
      return imageView; 
    } 
} 

Моя таблица имеет 4 колонки, и это выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<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" 
tools:context="superapp.networkapp.MainActivity" 
android:focusableInTouchMode="true"> 

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    android:name="com.google.android.gms.maps.MapFragment" 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 
<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="false" 
    android:layout_alignParentEnd="false"> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/warning_box" 
     android:padding="10dp" 
     android:layout_margin="3dp" 
     android:weightSum="1"> 

     <TextView 
      android:layout_width="276dp" 
      android:layout_height="wrap_content" 
      android:text="@string/warning_text" 
      android:id="@+id/main_boxText" 
      android:layout_margin="3dp" 
      android:textColor="@color/black" 
      android:textStyle="bold" 
      android:layout_weight="0.49" 
      android:textSize="12sp" 
      android:textIsSelectable="true" /> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:id="@+id/main_boxIcon" 
      android:src="@drawable/warning_icon" 
      android:layout_weight="0.47" /> 
    </LinearLayout> 

    <TableLayout 
     android:stretchColumns = "*" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:id="@+id/cellListTable"> 

     <TableRow 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/blue" 
      android:paddingTop="@dimen/table_marginVertical" 
      android:paddingBottom="@dimen/table_marginVertical" 
      android:id="@+id/cellTableHeading"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:text="@string/cells" 
       android:id="@+id/cell" 
       android:layout_column="0" 
       android:textColor="@color/white" 
       android:textColorHighlight="@color/blue" 
       android:textSize="@dimen/table_textSize" 
       android:textIsSelectable="true" 
       android:paddingLeft="@dimen/table_marginVertical" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:text="@string/table_current_info" 
       android:id="@+id/currentInfo" 
       android:layout_column="1" 
       android:textColor="@color/white" 
       android:textColorHighlight="@color/blue" 
       android:textSize="@dimen/table_textSize" 
       android:textIsSelectable="true" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:text="@string/table_target_info" 
       android:id="@+id/targetInfo" 
       android:layout_column="2" 
       android:textColor="@color/white" 
       android:textColorHighlight="@color/blue" 
       android:textSize="@dimen/table_textSize" 
       android:textIsSelectable="true" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:text="@string/status" 
       android:id="@+id/status" 
       android:layout_column="3" 
       android:textColor="@color/white" 
       android:textColorHighlight="@color/blue" 
       android:textSize="@dimen/table_textSize" 
       android:textIsSelectable="true" 
       android:textAlignment="textEnd" 
       android:paddingRight="@dimen/table_marginVertical" /> 
     </TableRow> 
    </TableLayout> 
</LinearLayout> 

Я понятия не имею, почему он не показывает. Я попытался посмотреть из Интернета, но, похоже, моя проблема не то же самое. У меня нет исключений или erros в logcat. Я попытался отладить и выяснил, что представления добавлены, но по какой-то причине они не отображаются. Кто-нибудь имеет представление об этом? Заранее спасибо.

UPDATE Я редактировал высоту макета представления по умолчанию для всех wrap_content. Я также добавил эту строку кода: перед добавлением tableRow в tableLayout. Но это все еще не работает.

tableRow.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.MATCH_PARENT)); 
+0

Я выполнил ваш код, он отлично работает для кода u, размещенного. Проверьте свой вызов create, если вы указываете на правильный идентификатор таблицы в findByViewIdMethod() –

+0

@jyotisakhare Спасибо, что сообщили мне об этом. Все еще не имеет понятия, потому что это должно быть одно, если tableLayout не тот, он должен вызывать исключение, потому что у меня только один TableLayout в моем макете. –

ответ

0

Вы должны определить макет для каждой строки таблицы и привязать textViews и ImageView к соответствующим элементам макета.