城市列表

ps:借鉴http://blog.csdn.net/smbroe/article/details/43058455这位大神的作品写了一个library 大家可以直接拿过来用。


·······记得把CityDBManager.java里面的包名改成自己的······



library下载地址:https://github.com/Mildsgithub/citylists_library.git 

mianactivity里代码:

package com.xm.pc.city_list;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.xm.pc.city_library.CityAdapter;
import com.xm.pc.city_library.CityBean;
import com.xm.pc.city_library.CityDBManager;
import com.xm.pc.city_library.QuicLocationBar;

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

public class MainActivity extends AppCompatActivity {
    private ListView mCityLit;
    private TextView overlay;
    private QuicLocationBar mQuicLocationBar;
    private HashMap<String, Integer> alphaIndexer;
    private ArrayList<CityBean> mCityNames;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mQuicLocationBar = (QuicLocationBar) findViewById(R.id.city_loactionbar);
        mQuicLocationBar.setOnTouchLitterChangedListener(new LetterListViewListener());
        overlay = (TextView) findViewById(R.id.city_dialog);
        mCityLit = (ListView) findViewById(R.id.city_list);
        mQuicLocationBar.setTextDialog(overlay);
        initList();
    }

    private void initList() {
        mCityNames = getCityNames();
        CityAdapter adapter = new CityAdapter(MainActivity.this, mCityNames);
        mCityLit.setAdapter(adapter);
        alphaIndexer = adapter.getCityMap();
        mCityLit.setOnItemClickListener(new CityListOnItemClick());
    }

    private ArrayList<CityBean> getCityNames() {
        CityDBManager dbManager = new CityDBManager(MainActivity.this);
        dbManager.openDateBase();
        dbManager.closeDatabase();
        SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(CityDBManager.DB_PATH
                + "/" + CityDBManager.DB_NAME, null);
        ArrayList<CityBean> names = new ArrayList<CityBean>();
        Cursor cursor = database.rawQuery("SELECT * FROM T_City ORDER BY NameSort", null);
        if (cursor.moveToFirst()) {
            do {
                CityBean cityModel = new CityBean();
                cityModel.setCityName(cursor.getString(cursor
                        .getColumnIndex("CityName")));
                cityModel.setNameSort(cursor.getString(cursor
                        .getColumnIndex("NameSort")));
                names.add(cityModel);
            } while (cursor.moveToNext());
        }
        database.close();
        return names;
    }

    private class CityListOnItemClick implements AdapterView.OnItemClickListener {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int pos,
                                long arg3) {
            CityBean cityModel = (CityBean) mCityLit.getAdapter()
                    .getItem(pos);
            Toast.makeText(MainActivity.this, cityModel.getCityName(),
                    Toast.LENGTH_SHORT).show();
        }

    }

    private class LetterListViewListener implements
            QuicLocationBar.OnTouchLetterChangedListener {

        @Override
        public void touchLetterChanged(String s) {
            // TODO Auto-generated method stub
            if (alphaIndexer.get(s) != null) {
                int position = alphaIndexer.get(s);
                mCityLit.setSelection(position);
            }
        }

    }

}
main对应的布局文件

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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="com.xm.pc.city_list.MainActivity">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center"
        android:orientation="vertical" >

        <ListView
            android:id="@+id/city_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:divider="#9E9E9E"
            android:dividerHeight="2dp" />
    </LinearLayout>

    <TextView
        android:id="@+id/city_dialog"
        android:layout_width="80.0dip"
        android:layout_height="80.0dip"
        android:layout_gravity="center"
        android:gravity="center"
        android:textColor="#000"
        android:textSize="30.0sp"
        android:visibility="gone" />

    <com.xm.pc.city_library.QuicLocationBar
        android:id="@+id/city_loactionbar"
        android:layout_width="30.0dip"
        android:layout_height="fill_parent"
        android:layout_gravity="right|center"
        android:paddingBottom="2dp" />
</FrameLayout>



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值