Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在表中看不到任何数据_Android_Xml_Android Tablelayout - Fatal编程技术网

Android 在表中看不到任何数据

Android 在表中看不到任何数据,android,xml,android-tablelayout,Android,Xml,Android Tablelayout,我在查看试图填充表格布局的数据时遇到问题。。当我运行代码时,它没有出错,但是表中没有填充数据,它只是显示为空,我所能看到的是我在xml文件中定义的标题行 我查看了多个示例,并将其中给出的一些答案搞乱了,比如在我的行中切换参数(我还没有找到正确的组合),并且我将导入的内容从视图更改为小部件,但仍然没有任何内容 public void createTable(String xmlForTable) throws XmlPullParserException, IOException { /

我在查看试图填充
表格布局的数据时遇到问题。。当我运行代码时,它没有出错,但是表中没有填充数据,它只是显示为空,我所能看到的是我在
xml文件中定义的标题行

我查看了多个示例,并将其中给出的一些答案搞乱了,比如在我的行中切换参数(我还没有找到正确的组合),并且我将导入的内容从
视图
更改为
小部件
,但仍然没有任何内容

public void createTable(String xmlForTable) 
    throws XmlPullParserException, IOException {
//public void createTable(){

    Integer i = 0;
    endPlacementTag = "nothing";
    //setContentView(R.layout.activity_all_tires);

     lo = (TableLayout)  findViewById(R.id.tiresTable);

     TableRow headerRow = new TableRow(this);
     TableRow.LayoutParams hp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);
     headerRow.setLayoutParams(hp);

     tv = new TextView(this);
     tv.setText("Text Header");
     headerRow.addView(tv);
     lo.addView(headerRow);

     XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
     factory.setNamespaceAware(true);
     XmlPullParser xpp = factory.newPullParser();

     xpp.setInput(new StringReader (xmlForTable));
     int eventType = xpp.getEventType();

     TableRow row= new TableRow(this);
        TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT);
        row.setLayoutParams(lp);

        rfid = new TextView(this);
        projectNumber = new TextView(this);
        inspectionLotNumber = new TextView(this);
        serialization = new TextView(this);
        spec = new TextView(this);
        sku = new TextView(this);
        materialNumber = new TextView(this);


     while (eventType != XmlPullParser.END_DOCUMENT) {

        if(eventType == XmlPullParser.START_DOCUMENT) {

              System.out.println("Start document");

          } else if(eventType == XmlPullParser.END_DOCUMENT) {

              System.out.println("End document");

          } else if(eventType == XmlPullParser.START_TAG) {

              System.out.println("Start tag "+xpp.getName());
              placementTag = xpp.getName();

          } else if(eventType == XmlPullParser.END_TAG) {

              System.out.println("End tag "+xpp.getName());
              endPlacementTag = "End tag "+xpp.getName();

          } else if(eventType == XmlPullParser.TEXT) {

              System.out.println("Text "+xpp.getText());
          }

           ....//filled with more if statements same as this one just different .equals

          if(placementTag.equals("MaterialNumber"))
              {
                  materialNumber.setText(xpp.getText());
                  materialNumber.setTextSize(10);                   
                  materialNumber.setLayoutParams(new LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                  //row.addView(materialNumber);
                  placementTag = "";

              }
              else if(endPlacementTag.equals("End tag Table")) 
              {

                  row.addView(rfid);
                  row.addView(projectNumber);
                  row.addView(inspectionLotNumber);
                  row.addView(serialization);
                  row.addView(spec);
                  row.addView(sku);
                  row.addView(materialNumber);

                  row.setGravity(Gravity.CENTER);
                  row.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

                  lo.addView(row, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

                  i++;
                  row.removeAllViews();
                  lo.removeAllViews();

              }

              }
          eventType = xpp.next();
          }
以下是我的XML:

<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#C0C0C0"    >

<!-- Once the column headers are known go back into the string.xml file and add them to elimiate warnings -->

<TableRow android:background="#C0C0C0" 

    >

    <TextView
        android:layout_width="200dp"
        android:layout_column="0"
        android:layout_weight="1"
        android:text="NUM" />

    <TextView
        android:layout_width="200dp"
        android:layout_column="1"
        android:layout_weight="1"
        android:text="Project Number" />

    <TextView
        android:layout_width="200dp"
        android:layout_column="2"
        android:layout_weight="1"
        android:text="Inspection Lot Number" />

    <TextView
        android:layout_width="200dp"
        android:layout_column="3"
        android:layout_weight="1"
        android:text="Serialization" />

    <TextView
        android:layout_width="200dp"
        android:layout_column="4"
        android:layout_weight="1"
        android:text="Spec" />

    <TextView
        android:layout_width="200dp"
        android:layout_column="5"
        android:layout_weight="1"
        android:text="SKU" />

    <TextView
        android:layout_width="200dp"
        android:layout_column="6"
        android:layout_weight="1"
        android:text="Material Number" />
</TableRow>

<ScrollView android:layout_height="match_parent"
    android:scrollbars="horizontal|vertical" 
    android:layout_width="match_parent"
    >      

    <HorizontalScrollView 
    android:layout_height="wrap_content"     
    android:scrollbars="horizontal|vertical" 
    android:layout_width="wrap_content" >

<TableLayout android:id="@+id/tiresTable"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="#C0C0C0"  >          
<TableRow>

</TableRow>
</TableLayout>
</HorizontalScrollView>
</ScrollView>     
</TableLayout>

按以下方式更改代码。因为添加后将删除所有视图。并且您不会再次初始化行的子视图

    public void createTable(String xmlForTable) 
        throws XmlPullParserException, IOException {
    //public void createTable(){

        Integer i = 0;
        endPlacementTag = "nothing";
        //setContentView(R.layout.activity_all_tires);

         lo = (TableLayout)  findViewById(R.id.tiresTable);

         TableRow headerRow = new TableRow(this);
         TableRow.LayoutParams hp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);
         headerRow.setLayoutParams(hp);

         tv = new TextView(this);
         tv.setText("Text Header");
         headerRow.addView(tv);
         lo.addView(headerRow);

         XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
         factory.setNamespaceAware(true);
         XmlPullParser xpp = factory.newPullParser();

         xpp.setInput(new StringReader (xmlForTable));
         int eventType = xpp.getEventType();


            TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT);





         while (eventType != XmlPullParser.END_DOCUMENT) {
               TableRow row= new TableRow(this);
                row.setLayoutParams(lp);
                rfid = new TextView(this);
                projectNumber = new TextView(this);
                inspectionLotNumber = new TextView(this);
                serialization = new TextView(this);
                spec = new TextView(this);
                sku = new TextView(this);
                materialNumber = new TextView(this);
            if(eventType == XmlPullParser.START_DOCUMENT) {

                  System.out.println("Start document");

              } else if(eventType == XmlPullParser.END_DOCUMENT) {

                  System.out.println("End document");

              } else if(eventType == XmlPullParser.START_TAG) {

                  System.out.println("Start tag "+xpp.getName());
                  placementTag = xpp.getName();

              } else if(eventType == XmlPullParser.END_TAG) {

                  System.out.println("End tag "+xpp.getName());
                  endPlacementTag = "End tag "+xpp.getName();

              } else if(eventType == XmlPullParser.TEXT) {

                  System.out.println("Text "+xpp.getText());
              }

               ....//filled with more if statements same as this one just different .equals

              if(placementTag.equals("MaterialNumber"))
                  {
                      materialNumber.setText(xpp.getText());
                      materialNumber.setTextSize(10);                   
                      materialNumber.setLayoutParams(new LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                      //row.addView(materialNumber);
                      placementTag = "";

                  }
                  else if(endPlacementTag.equals("End tag Table")) 
                  {

                      row.addView(rfid);
                      row.addView(projectNumber);
                      row.addView(inspectionLotNumber);
                      row.addView(serialization);
                      row.addView(spec);
                      row.addView(sku);
                      row.addView(materialNumber);

                      row.setGravity(Gravity.CENTER);
                      row.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

                      lo.addView(row, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

                      i++;

                  }

                  }
              eventType = xpp.next();
              }

如果删除这些代码行,则会出现以下错误
java.lang.IllegalStateException:指定的子级已具有父级。必须首先对子级的父级调用removeView()