Android listview下面嵌套一个TableLayout问题?

UI的XML代码:main.xml

 <?xml version="1.0" encoding="utf-8"?>  

 <LinearLayout  

     android:id="@+id/LinearLayout01"  

     android:layout_width="fill_parent"  

     android:layout_height="fill_parent"  

     xmlns:android="http://schemas.android.com/apk/res/android">  

        

     <ListView android:layout_width="wrap_content"  

               android:layout_height="wrap_content"  

               android:id="@+id/MyListView">  

     </ListView>  

 </LinearLayout> 

   

 my_listitem.xml的代码如下,my_listitem.xml用于设计ListView的Item 

   

  <?xml version="1.0" encoding="utf-8"?>   

 <LinearLayout   

     android:layout_width="fill_parent"   

     xmlns:android="http://schemas.android.com/apk/res/android"   

     android:orientation="vertical"  

     android:layout_height="wrap_content"   

     android:id="@+id/MyListItem"   

     android:paddingBottom="3dip"   

     android:paddingLeft="10dip">   

     <TextView   

             android:layout_height="wrap_content"   

             android:layout_width="fill_parent"   

             android:id="@+id/ItemTitle"   

             android:textSize="30dip">   

     </TextView>   

     <TextView   

             android:layout_height="wrap_content"   

             android:layout_width="fill_parent"   

             android:id="@+id/ItemText">   

     </TextView>   

   

     <TableLayout 

         android:id="@+id/tl"

         android:layout_width="fill_parent"

         android:layout_height="wrap_content"

         android:stretchColumns="0,1"> 

     <TableRow> 

         <TextView 

             android:layout_height="wrap_content"

             android:text="a1"/> 

         <TextView 

             android:layout_height="wrap_content"

             android:text="a2"/> 

     </TableRow> 

     <TableRow> 

         <TextView 

             android:id="@+id/a1"

             android:layout_height="wrap_content"/> 

         <TextView 

             android:id="@+id/a2"

             android:layout_height="wrap_content"/> 

     </TableRow> 

    </TableLayout> 

 </LinearLayout>


如果没有TableLayout的情况下是这样的循环的:

 

 public void onCreate(Bundle savedInstanceState) {   

     super.onCreate(savedInstanceState);   

     setContentView(R.layout.main);   

     //绑定XML中的ListView,作为Item的容器   

     ListView list = (ListView) findViewById(R.id.MyListView);   

     ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();   

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

         HashMap<String, String> map = new HashMap<String, String>();   

         map.put("ItemTitle", "This is Titl");   

         map.put("ItemText", "This is text");   

         mylist.add(map);   

     }   

     SimpleAdapter mSchedule = new SimpleAdapter(this,    

         mylist, 

         R.layout.my_listitem,        

         new String[] {"ItemTitle", "ItemText"},  

         new int[] {R.id.ItemTitle,R.id.ItemText});   

     list.setAdapter(mSchedule);   

 }

 

问题:这个listview下面的TableLayout的数据我是从数据库取出来循环显示的,那么我怎么写呢?

 

6个回答

TableLayout container_table = (TableLayout )findViewById(R.id.tl);

container_table.clearxxxxx;

TabRow header = new TabRow(...)

TextView column_1 = new TextView();
column_1.setText("column_1");

header.add(column_1);

TextView column_2 = new TextView();
column_2.setText("column_2");

header.add(column_2);
container_table.add(header);

for(Item: List) {
TabRow row = new TabRow();
如上。。。。

container_table.add(row);
}

[code="java"]你这个不能这样直接用SimpleAdapter
需要自定义 adapter

再getview里面来做

例如 public MyAdapter extends BaseAdapter{

//这个date 你再要用MyAdapter 提供 ,这个不管你从数据库来的 还是哪里来得 变成一个 list或者其它的数据结构传进来
public MyAdapter(List date){
....

}

public View getView(){
再这里来设置要显示的内容
吧date的数据 显示到你要显示的控件上。。。
}
}
[/code]

先加载list_item.xml
然后

findviewbyid()

[code="java"]

首先感谢您的回答,我是初学者,能不能详细一些呢 譬如在MyAdapter 里面怎么获取到TableLayout。。。

你先load 你的listitem.xml
然后findViewById(R.id.tl)

public class ListViewAdapter extends BaseAdapter {

private Context context; //运行上下文

private List> listItems;

private LayoutInflater listContainer; //视图容器

public ListViewAdapter(Context context, List> listItems) {

this.context = context;

listContainer = LayoutInflater.from(context); //创建视图容器并设置下文

this.listItems = listItems;

}

public View getView(int position, View convertView, ViewGroup parent) {
convertView = listContainer.inflate(R.layout.list_item, null); //加载你的listview的item布局
然后 convertView.findViewById(R.id.tl)这样获得TableLayout

}
}
[/code]

[code="java"]自定义得private Context context;

用得时候从构造器传过来
[/code]

[code="java"]不用 如果说你得
TableLayout 固定了 直接都用findViewById
<TextView

         android:id="@+id/a1"

         android:layout_height="wrap_content"/> 

     <TextView 

         android:id="@+id/a2"

         android:layout_height="wrap_content"/>  

findViewById(R.id.a1)...
[/code]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问