一二三四級聯動,ListView聯動,城市選擇聯動,SQLite輕量級資料庫,城市資料庫!!!
效果如下:
專案介紹
- 一二三四級聯動,ListView聯動,城市選擇聯動,SQLite輕量級資料庫,城市資料庫!!!
- 基於專案本地的資原始檔,SQLite輕量級資料庫實現的城市選擇器,資料庫中城市資料基本齊全。
- 本Demo是使用的ListView實現的聯動,當然也可使用Fragment,在這裡我只給出了一種方式。
- 思路是融匯貫通的,我看網上大多都是三級聯動,所以在這裡給出一個很久之前寫的四級聯動,希望能夠幫助到大家。
- 注意:本Demo並不侷限於資料庫使用,如果您能夠理解該思路&邏輯,使用json等其他方式都可實現更多級的聯動。
/**
* 設定省
*/
private void setProvince() {
provinceValues=getProvince(countryValues.get(countryPosition).getPlaceid());
if(!(provinceValues.isEmpty())){
provinceAdapter=new LevelListViewAdapter(this, provinceValues);
provinceAdapter.setSelectedPositionNoNotify(provincePosition, provinceValues);
lv_province.setAdapter(provinceAdapter);
provinceAdapter.setOnItemClickListener(new LevelListViewAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
if(provinceNumber!=position){//記錄不是當前點選的
provinceNumber=position;//就記錄當前條目
provinceTime=System.currentTimeMillis();//並記錄第一次時間戳
Timer timer=new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
provinceNumber=-1;
provinceTime=0;
}
}, 300);
}else{//記錄的是當前點選的
long num = System.currentTimeMillis()-provinceTime;//判斷時間差,是不是雙擊
if(num<=300){//時間差200毫秒內
ToastUtil.showToast(MainActivity.this, provinceValues.get(position).getPlacename());
}
provinceNumber=-1;//重置過的記錄
provinceTime=0;//重置時間的記錄
}
cityValues.clear();
if(!(provinceValues.isEmpty())){
cityValues=getCity(provinceValues.get(position).getPlaceid());
cityAdapter.notifyDataSetChanged();
cityAdapter.setSelectedPositionNoNotify(0, cityValues);
lv_city.smoothScrollToPosition(0);
}else{
cityAdapter.notifyDataSetChanged();
}
}
});}
}複製程式碼
設定國和州,省的方式是一樣的,這裡不在貼出
佈局很簡單:
...
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal" >
<ListView
android:id="@+id/lv_continent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#ffffff"
android:cacheColorHint="#00000000"
android:divider="@null"
android:dividerHeight="0dp"
android:scrollbars="none" >
</ListView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
<ListView
android:id="@+id/lv_country"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#ffffff"
android:cacheColorHint="#00000000"
android:divider="@null"
android:dividerHeight="0dp"
android:scrollbars="none" >
</ListView>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="#c8c8c8" />
</LinearLayout>
......複製程式碼
參考雙聯動ListView--類似外賣點餐:
github專案:
相信自己,沒有做不到的,只有想不到的
如果你覺得此文對您有所幫助,歡迎入群 QQ交流群 :644196190
微信公眾號:終端研發部