Programmitically添加项目从列表到TableLayout [英] Programmitically adding items from a list to a TableLayout

查看:304
本文介绍了Programmitically添加项目从列表到TableLayout的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Android项目我的工作。我是相当新Android开发,所以我有,我在创建表布局工作一个MainActivity.java文件中的一些code,但方式我的code是目前我只可以从列表中添加一个项目我可以在Activity.java类做些什么来改变这种做法,它会以编程方式添加我所有的麦当劳的对象太表。我能做些什么,以两行添加到MainActivity.java的看法?

I have an Android project I am working on. I am fairly new to Android Development so I have some code in a MainActivity.java file that I am working on Creating a Table Layout for but the way my code currently is I can only add one item from that list what can I do in the Activity.java class to change this so it will programmatically add all of my Mcdonalds objects too the Table. What can I do to add both rows to the view on MainActivity.java?

activity_main.xml中

Activity_Main.xml

 <LinearLayout 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"
     android:paddingBottom="@dimen/activity_vertical_margin"
     android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
     tools:context=".ShelterActivity" >

 <TableLayout android:id="@+id/TableLayout01" android:layout_width="fill_parent" android:layout_height="wrap_content"  android:stretchColumns="0">

   <TableRow 
       android:id="@+id/TableRow01" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content">

     <TextView 
         android:id="@+id/TextView01" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Address"
         android:width="250px"
         android:textStyle="bold"></TextView>
     <TextView 
         android:id="@+id/TextView02" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Distance"
         android:width="250px"
         android:textStyle="bold"></TextView>
     <TextView 
         android:id="@+id/TextView03" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="ETA"
         android:width="250px"
         android:textStyle="bold"></TextView> 
   </TableRow>
 </TableLayout>  
 </LinearLayout>

MainActivity.java

MainActivity.java

         protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_shelter);
         List<McDonalds> mcdList = new ArrayList<McDonalds>();

               ScrollView sv = new ScrollView(this);

                     // get a reference for the TableLayout
                     TableLayout ll = (TableLayout) findViewById(R.id.TableLayout01);

                     HorizontalScrollView hsv = new HorizontalScrollView(this);
               // create a new TableRow
                     TableRow row = new TableRow(this);


         //This will be replaced by a Read Only Stored procedure that gets the List of Shelters
         McDonalds mcdonalds = new McDonalds("720 N Main St, Roswell, NM", 1.08, 8.0);
         mcdList.add(mcdonalds);
         McDonalds mcdonalds1 = new McDonalds("1804 S Main St, Roswell, NM", 2.9, 12.0);
         mcdList.add(mcdonalds1);
         for (McDonalds mcD : mcdList){
              // create a new TextView
                    TextView t = new TextView(this);
                    TextView t1 = new TextView(this);
                    TextView t2 = new TextView(this);
        String mcdAddress = mcD.getAddress();
        String distance = mcD.getDistance().toString();
        String ETA = mcD.getETA().toString();
        t.setText(mcdAddress);
        t1.setText(distance);
        t2.setText(ETA);
        row.addView(t);
        row.addView(t1);
        row.addView(t2);


    }
    // add the TableRow to the TableLayout
    ll.addView(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));



}

由于在code看到上面应该有列表中的两个项目,我需要一种方法来与ll.addView(行,新TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT添加两个项目) );但是这将抛出一个错误。

As seen in the code above there should be two items in the list and I need a way to add both items with the ll.addView(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); but this will throw a error.

推荐答案

您是pretty接近,但你必须做的是:

You are pretty close but What you have to do is:


  1. 从你的XML中删除您的TableRow。

  2. 始终创建在一个循环中一个新的TableRow。

  3. 所有您需要TextViews布局PARAMS通过 setLayoutParams设置(新TableRow.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

  4. 添加表行到表的布局也处于环

  5. 我会说MATCH_PARENT将每个表行宽度
  6. 更好

其他的方式做这将是使一个XML文件,它的textViews它里面。用充气LayoutInflater.from(上下文).inflate的XML(...),填写所有3 textviews根据ID找到他们这个膨胀的TableRow添加到tableLayout

The other way to do it would be to make an xml file with and it's textViews inside of it. Inflate the xml with LayoutInflater.from(context).inflate(...), fill all 3 textviews finding them by id and add this inflated tableRow to a tableLayout

这篇关于Programmitically添加项目从列表到TableLayout的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆