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的数据我是从数据库取出来循环显示的,那么我怎么写呢?
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]