使用TabView和ListView构建游戏中的排行榜

这篇博客详细介绍了如何使用TabView和ListView在游戏应用中构建排行榜功能。首先,展示了主界面的XML布局,接着分别给出了四个TabView的界面XML。然后,讲述了如何创建并填充ListView的数据,包括定义ArrayList、HashMap以及设置Adapter。最后,讲解了主界面的四个Activity的创建,通过TabHost加载不同的TabSpec来实现不同排名列表的切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        1. 写出主界面的xml

<TabHost

        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:layout_below="@+id/pvp_rank_bluebar_up"
        android:layout_marginLeft="195dp"
        android:layout_marginTop="10dp"
        android:layout_above="@+id/pvp_rank_bluebar_down">

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:tabStripEnabled="false" />

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" />


        </LinearLayout>


</TabHost>

        2. 分别写出四个TabView要展示的界面的xml

<ListView android:layout_width="wrap_content"   
          android:layout_height="wrap_content"   
          android:id="@+id/pvp_rank_losers_list"   />

        3. 写出四个xml对应的activity用于显示

   1).  定义ListView

          2). 定义ArrayList<HashMap<String, Object>>

          3).进行加载

          4).list进行设置Adapter

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pvp_rank_week);
ListView list = (ListView) findViewById(R.id.pvp_rank_week_list); 
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();  
for(int i=0;i<20;i++){
HashMap<String, Object> map = new HashMap<String, Object>();  
              map.put("ItemImage", R.drawable.pvp_game_ic_girl);
              map.put("ItemTitle", "');  
              listItem.add(map); 
}
SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,R.drawable.rank_list_items, new String[] {"ItemImage","ItemTitle"}, new int[] {R.id.ItemImage,R.id.ItemTitle} ); 
list.setAdapter(listItemAdapter);  }
  

        4. 写出主界面的四个activity:使用TabHost.TabSpec spec定义不同Tab,用TabHost tabHost去逐一加载

TabWidget tabWidget;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pvp_rank);
Resources res = getResources();
final TabHost tabHost = getTabHost();
TabHost.TabSpec spec; 


Intent intent;
intent = new Intent().setClass(this, PVPGameRankWeek.class);
spec = tabHost.newTabSpec("week").setIndicator("").setContent(intent);tabHost.addTab(spec);
intent = new Intent().setClass(this, PVPGameRankWeek.class);

intent = new Intent().setClass(this, PVPGameRankTotal.class);
spec = tabHost.newTabSpec("total").setIndicator("").setContent(intent);
tabHost.addTab(spec);

intent = new Intent().setClass(this, PVPGameRankLosers.class);
spec = tabHost.newTabSpec("losers").setIndicator("").setContent(intent);
tabHost.addTab(spec);

intent = new Intent().setClass(this, PVPGameRankMe.class);
spec = tabHost.newTabSpec("me").setIndicator("").setContent(intent);
tabHost.addTab(spec);

tabHost.setCurrentTab(1);

View v;
tabWidget = tabHost.getTabWidget();

for (int i = 0; i < tabWidget.getChildCount(); i++) {
v = tabWidget.getChildAt(i);
v.setBackgroundResource(R.drawable.tab_rank_week_unpres);
TextView textView = (TextView) v.findViewById(android.R.id.title);
textView.setTextColor(Color.TRANSPARENT);}

tabHost.setOnTabChangedListener(new OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {
View v = tabHost.getTabWidget().getChildAt(i);
setBackgroundResource(R.drawable.tab_rank_week_unpres);}
}
}
});
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值