最近在做一个关于招聘的APP,里面有选择城市一项,是用listview分类,有的人说两个listview嵌套,但是感觉太麻烦了,比较listview底层太复杂,有的人用expandablelistview,但是感觉效果一样不好,所以写了一个比较简单的,希望对大家有帮助!
1.首先看MainActivity类!
其实跟普通的代码一样,只是多了一个MyBean类!
- package com.zhaoqingyuan.zhaoqingyuan;
- import java.util.ArrayList;
- import java.util.List;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.ListView;
- public class MainActivity extends Activity {
- private ListView listView;
- private MyAdapter myAdapter;
- private List<MyBean>list=new ArrayList<MyBean>();//装数据的
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- listView=(ListView) findViewById(R.id.listView1);
- //装数据了
- //当前位置
- MyBean myBean=new MyBean("当前位置", "北京");
- list.add(myBean);
- //热门城市
- String[] hotCity={"全国","北京","上海","武汉","广州","天津","太原","南京","深圳","重庆","昆明","拉萨","石家庄","哈尔滨","贵阳"};
- for (int i = 0; i < hotCity.length; i++) {
- MyBean myBean2=new MyBean("热门城市", hotCity[i]);
- list.add(myBean2);
- }
- //热门城市
- String[] province={"河北省","河南省","云南省","辽宁省","黑龙江省","湖南省","安徽省","山东省","江苏省","浙江省",
- " 江西省","湖北省","甘肃省","山西省","内蒙古","陕西省","吉林省","福建省","贵州省","广东省",
- "青海省","西藏","四川省","宁夏回族","海南省","台湾省"};
- for (int i = 0; i < province.length; i++) {
- MyBean myBean3=new MyBean("按省份选择城市", province[i]);
- list.add(myBean3);
- }
- myAdapter=new MyAdapter(MainActivity.this, list);
- listView.setAdapter(myAdapter);
- }
- }
- package com.zhaoqingyuan.zhaoqingyuan;
- public class MyBean {
- private String series;
- private String city;//可以替代省份名称
- public MyBean(String series,String city) {
- setSeries(series);
- setCity(city);
- }
- public String getSeries() {
- return series;
- }
- public void setSeries(String series) {
- this.series = series;
- }
- public String getCity() {
- return city;
- }
- public void setCity(String city) {
- this.city = city;
- }
- }
- package com.zhaoqingyuan.zhaoqingyuan;
- import java.util.ArrayList;
- import java.util.List;
- import android.content.Context;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.TextView;
- public class MyAdapter extends BaseAdapter {
- private Context context;
- private List<MyBean>list=new ArrayList<MyBean>();
- public MyAdapter(Context context,List<MyBean>list) {
- this.context=context;
- this.list=list;
- }
- @Override
- public int getCount() {
- return list.size();
- }
- @Override
- public Object getItem(int position) {
- return list.get(position);
- }
- @Override
- public long getItemId(int position) {
- return position;
- }
- Holder holder;
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- holder=new Holder();
- if (convertView==null) {
- convertView=LayoutInflater.from(context).inflate(R.layout.item, null);
- holder.tv_series=(TextView) convertView.findViewById(R.id.tv_series);
- holder.tv_city=(TextView) convertView.findViewById(R.id.tv_city);
- convertView.setTag(holder);
- }else {
- holder=(Holder) convertView.getTag();
- }
- String series1=list.get(position).getSeries();
- String series2=position-1>=0?list.get(position-1).getSeries():"";
- if (!series1.equals(series2)) {
- holder.tv_series.setVisibility(View.VISIBLE);
- System.out.println(position);
- holder.tv_series.setText(series1);
- holder.tv_city.setText(list.get(position).getCity());
- }else {
- holder.tv_series.setVisibility(View.GONE);
- holder.tv_city.setText(list.get(position).getCity());
- }
- return convertView;
- }
- private class Holder{
- TextView tv_series,tv_city;
- }
- }
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".MainActivity" >
- <ListView
- android:id="@+id/listView1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true">
- </ListView>
- </RelativeLayout>
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
- <TextView
- android:id="@+id/tv_series"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="@android:color/darker_gray"
- android:visibility="gone"
- android:padding="5dip"
- android:textSize="18dip"
- android:text="TextView" />
- <TextView
- android:id="@+id/tv_city"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginLeft="10dip"
- android:textSize="18dip"
- android:text="TextView" />
- </LinearLayout>
http://blog.csdn.net/xiaoyuan511/article/details/17340185