简单实现一个Android ListView分类

最近在做一个关于招聘的APP,里面有选择城市一项,是用listview分类,有的人说两个listview嵌套,但是感觉太麻烦了,比较listview底层太复杂,有的人用expandablelistview,但是感觉效果一样不好,所以写了一个比较简单的,希望对大家有帮助!

1.首先看MainActivity类!

其实跟普通的代码一样,只是多了一个MyBean类!

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.zhaoqingyuan.zhaoqingyuan;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import android.app.Activity;  
  7. import android.os.Bundle;  
  8. import android.widget.ListView;  
  9.   
  10. public class MainActivity extends Activity {  
  11.     private ListView listView;  
  12.     private MyAdapter myAdapter;  
  13.     private List<MyBean>list=new ArrayList<MyBean>();//装数据的  
  14.     @Override  
  15.     protected void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         setContentView(R.layout.activity_main);  
  18.         listView=(ListView) findViewById(R.id.listView1);  
  19.           
  20.         //装数据了  
  21.         //当前位置  
  22.         MyBean myBean=new MyBean("当前位置""北京");  
  23.         list.add(myBean);  
  24.         //热门城市  
  25.         String[] hotCity={"全国","北京","上海","武汉","广州","天津","太原","南京","深圳","重庆","昆明","拉萨","石家庄","哈尔滨","贵阳"};  
  26.         for (int i = 0; i < hotCity.length; i++) {  
  27.             MyBean myBean2=new MyBean("热门城市", hotCity[i]);  
  28.             list.add(myBean2);  
  29.         }  
  30.         //热门城市  
  31.           
  32.         String[] province={"河北省","河南省","云南省","辽宁省","黑龙江省","湖南省","安徽省","山东省","江苏省","浙江省",  
  33.                 " 江西省","湖北省","甘肃省","山西省","内蒙古","陕西省","吉林省","福建省","贵州省","广东省",  
  34.                 "青海省","西藏","四川省","宁夏回族","海南省","台湾省"};  
  35.         for (int i = 0; i < province.length; i++) {  
  36.             MyBean myBean3=new MyBean("按省份选择城市", province[i]);  
  37.             list.add(myBean3);  
  38.         }  
  39.           
  40.         myAdapter=new MyAdapter(MainActivity.this, list);  
  41.         listView.setAdapter(myAdapter);  
  42.     }  
  43. }  
2.这个是Bean类,里面有get和set方法!

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.zhaoqingyuan.zhaoqingyuan;  
  2.   
  3. public class MyBean {  
  4.   
  5.     private String series;  
  6.     private String city;//可以替代省份名称  
  7.     public MyBean(String series,String city) {  
  8.         setSeries(series);  
  9.         setCity(city);  
  10.     }  
  11.     public String getSeries() {  
  12.         return series;  
  13.     }  
  14.     public void setSeries(String series) {  
  15.         this.series = series;  
  16.     }  
  17.     public String getCity() {  
  18.         return city;  
  19.     }  
  20.     public void setCity(String city) {  
  21.         this.city = city;  
  22.     }  
  23.       
  24.       
  25. }  
3.接下来就是我们在熟悉不过的适配器了!就是多了两行代码而已!

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.zhaoqingyuan.zhaoqingyuan;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import android.content.Context;  
  7. import android.view.LayoutInflater;  
  8. import android.view.View;  
  9. import android.view.ViewGroup;  
  10. import android.widget.BaseAdapter;  
  11. import android.widget.TextView;  
  12.   
  13. public class MyAdapter extends BaseAdapter {  
  14.     private Context context;  
  15.     private List<MyBean>list=new ArrayList<MyBean>();  
  16.     public MyAdapter(Context context,List<MyBean>list) {  
  17.         this.context=context;  
  18.         this.list=list;  
  19.     }  
  20.       
  21.     @Override  
  22.     public int getCount() {  
  23.           
  24.         return list.size();  
  25.     }  
  26.   
  27.     @Override  
  28.     public Object getItem(int position) {  
  29.           
  30.         return list.get(position);  
  31.     }  
  32.   
  33.     @Override  
  34.     public long getItemId(int position) {  
  35.           
  36.         return position;  
  37.     }  
  38.     Holder holder;  
  39.     @Override  
  40.     public View getView(int position, View convertView, ViewGroup parent) {  
  41.         holder=new Holder();  
  42.         if (convertView==null) {  
  43.             convertView=LayoutInflater.from(context).inflate(R.layout.item, null);  
  44.             holder.tv_series=(TextView) convertView.findViewById(R.id.tv_series);  
  45.             holder.tv_city=(TextView) convertView.findViewById(R.id.tv_city);  
  46.             convertView.setTag(holder);  
  47.         }else {  
  48.             holder=(Holder) convertView.getTag();  
  49.         }  
  50.         String series1=list.get(position).getSeries();  
  51.         String series2=position-1>=0?list.get(position-1).getSeries():"";  
  52.         if (!series1.equals(series2)) {  
  53.             holder.tv_series.setVisibility(View.VISIBLE);  
  54.             System.out.println(position);  
  55.             holder.tv_series.setText(series1);  
  56.             holder.tv_city.setText(list.get(position).getCity());  
  57.         }else {  
  58.             holder.tv_series.setVisibility(View.GONE);  
  59.             holder.tv_city.setText(list.get(position).getCity());  
  60.         }  
  61.           
  62.           
  63.         return convertView;  
  64.     }  
  65.       
  66.     private class Holder{  
  67.         TextView tv_series,tv_city;  
  68.     }  
  69.   
  70. }  
4.来看下简单的XML代码

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context=".MainActivity" >  
  6.   
  7.     <ListView  
  8.         android:id="@+id/listView1"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:layout_alignParentLeft="true"  
  12.         android:layout_alignParentTop="true">  
  13.     </ListView>  
  14.   
  15. </RelativeLayout>  

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <TextView  
  8.         android:id="@+id/tv_series"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:background="@android:color/darker_gray"  
  12.         android:visibility="gone"  
  13.         android:padding="5dip"  
  14.         android:textSize="18dip"  
  15.         android:text="TextView" />  
  16.   
  17.     <TextView  
  18.         android:id="@+id/tv_city"  
  19.         android:layout_width="match_parent"  
  20.         android:layout_height="wrap_content"  
  21.         android:layout_marginLeft="10dip"  
  22.         android:textSize="18dip"  
  23.         android:text="TextView" />  
  24.   
  25. </LinearLayout>  
OK了,大功告成,让我们看一下效果吧!

http://blog.csdn.net/xiaoyuan511/article/details/17340185

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值