android中在TabActivity下添加ListView显示为空

陈怡欣 发布于 2012/02/10 17:55
阅读 2K+
收藏 0

在Tab下添加listview,这里到底哪里错了。

package com.kenfor.contact;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;

public class ContactActivity extends TabActivity{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    final ListView listView=new ListView(this);
setTitle("通讯录");
TabHost tabHost = getTabHost();
LayoutInflater.from(this).inflate(R.layout.main,tabHost.getTabContentView(), true);
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("拨号").setContent(R.id.tab1));
tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("通讯录").setContent(R.id.tab2));
tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("tab3").setContent(R.id.tab3));
tabHost.addTab(tabHost.newTabSpec("tab4").setIndicator("tab4").setContent(R.id.tab4));
tabHost.setOnTabChangedListener(new OnTabChangeListener(){
@Override
public void onTabChanged(String tabId) {
// TODO Auto-generated method stub
System.out.println("tabid"+tabId);
if(tabId.equals("tab1")){
List<HashMap<String,String>> list=new ArrayList<HashMap<String,String>>();
HashMap<String, String> m1 = new HashMap<String, String>();
m1.put("user_name","zhangsan");
m1.put("user_gender", "女");

HashMap<String, String> m2 = new HashMap<String, String>();
m2.put("user_name", "lisi");
m2.put("user_gender", "男");

HashMap<String, String> m3 = new HashMap<String, String>();
m3.put("user_name", "wangwu");
m3.put("user_gender","女");
list.add(m1);
list.add(m2);
list.add(m3);
SimpleAdapter simpleAdapter=new SimpleAdapter(ContactActivity.this,list,
R.layout.item,new String[]{"user_name","user_gender"},new int[]{R.id.user_name,R.id.user_gender});
System.out.println("lss"+listView);
listView.setAdapter(simpleAdapter);
}else{
System.out.println("e");
}
}
});
   
    }
}
通过以上代码,希望在红色框内显示listview,但是运行项目时却是空的,哪位大侠指点指点啊?

以下是问题补充:

@陈怡欣:大家看看有什么其他问题啊,答案不准确啊 (2012/02/11 09:40)
@thanksdmh:其他含有ListView 的Activity 也无法显示该Activity 里面ListView的数据呢,怎么解决的楼主? (2012/03/01 17:10)
加载中
0
雨焰
雨焰

同意楼上说的,你可以private ListView listview;

然后listview=(ListView)findViewById(R.id.??????)->你在布局文件中的给定的listview的Id,其他的不变!运行试试看看!

0
纯的感觉
纯的感觉

你应该在tab的布局里加上ListView组件,再在这里通过getViewById()找到ListView应该就可以了

 

0
杨晓宜
杨晓宜

该类实现TabHost.TabContentFactory 接口

再将tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("tab3").setContent(R.id.tab1));里面的R.id.tab3改为this 试一下

0
R
Royeellq
楼主这个问题解决没,我也遇到这个问题 好几天了都不晓得是什么问题
返回顶部
顶部