:
Code
Popuwindowwidget
package com.example.checklistview;import Android.annotation.suppresslint;import Android.content.context;import Android.view.view;import Android.view.viewgroup.layoutparams;import Android.widget.PopupWindow, @SuppressLint ("Viewconstructor") public class Popuwindowwidget{private static Popuwindowwidget popuwindow=null;private Context Context;public Popuwindowwidget (context context) {this.context= Context;} public static Popuwindowwidget getinstance (context context) {if (popuwindow==null) {popuwindow=new Popuwindowwidget ( context);} return Popuwindow;} public void Oncreatepopuwindow (view View,popuwindowlistener listener) {Popupwindow pop=new Popupwindow (view, layoutparams.match_parent,layoutparams.wrap_content);p op.setoutsidetouchable (False);p op.setfocusable (false); Pop.setbackgrounddrawable (Context.getresources (). getdrawable (R.drawable.background_trans)); Listener.initialization (POP);}}
Package Com.example.checklistview;import Android.widget.popupwindow;public Interface popuwindowlistener{void isShow (boolean isshow,string message); void initialization (Popupwindow popuwindow); void Onclickitem (Object obj);}
Popuwindowview:
Package Com.example.checklistview;import Java.util.arraylist;import Java.util.hashmap;import android.app.Activity; Import Android.view.view;import Android.view.view.onclicklistener;import Android.widget.button;import Android.widget.listview;import Android.widget.textview;import Android.widget.toast;import Com.example.checklistview.checkadapter.nameonclicklistener;public class Popuwindowview Implements Nameonclicklistener{private static Popuwindowlistener listener;private View view;private Activity activity;private TextView tv;private ListView listview_bar;private ListView listview_data;private arraylist<checkbean> Data=null ;p rivate arraylist<checkbean> bar=null;private hashmap<integer, arraylist<checkbean>> map=new Hashmap<integer, arraylist<checkbean>> ();p rivate hashmap<string,string> checkString=new HashMap <String,String> ();p rivate checkadapter adapter_bar;private datacheckadapter adapter_data;private viewholder Vhs;private TextView ChecK_value;private Button sure;public static Popuwindowview getinstance (Activity activity,popuwindowlistener Popuwindowlistener,int layout) {Listener=popuwindowlistener;return new Popuwindowview (activity, layout);} Public Popuwindowview (Activity activity,int layout) {This.view=activity.getlayoutinflater (). Inflate (layout, null); This.activity=activity;initialization ();} private void initialization () {//TODO auto-generated method stubcheck_value= (TextView) View.findviewbyid ( R.id.textview_check_value); sure= (Button) View.findviewbyid (r.id.sure); listview_bar= (ListView) View.findviewbyid ( R.id.action_bar); Listview_data= (ListView) View.findviewbyid (r.id.listview_data); InitData (); adapter_bar=new Checkadapter (activity, bar,this); adapter_data=new datacheckadapter (activity, map.get (0), this); Listview_ Bar.setadapter (Adapter_bar); Listview_data.setadapter (Adapter_data); Sure.setonclicklistener (New OnClickListener ( {@Overridepublic void OnClick (View v) {//TODO auto-generated method Stublistener.isshow (False, CheCkstring.tostring ());});} private void InitData () {//TODO auto-generated method Stubbar=new arraylist<checkbean> (); Checkbean cb0=new checkbean (0, "Release Time", true); Checkbean cb1=new Checkbean (1, "expected monthly salary", false); Checkbean cb2=new Checkbean (2, "working experience", false); Bar.add (cb0); Bar.add (CB1); Bar.add (CB2);d ata=new arraylist< Checkbean> (); Checkbean dcb0=new checkbean (0, "all", false); Checkbean dcb1=new Checkbean (1, "Today", false); Checkbean dcb2=new Checkbean (2, "last three days", false); Checkbean dcb3=new Checkbean (3, "Last week", false); Checkbean dcb4=new Checkbean (4, "Last one months", false);d Ata.add (dcb0);d ata.add (DCB1);d ata.add (DCB2);d ata.add (DCB3); Data.add (DCB4); map.put (0, data);d ata=new arraylist<checkbean> (); Checkbean dcb01=new checkbean (0, "negotiable", false); Checkbean dcb11=new Checkbean (1, "less than 3000 yuan", false); Checkbean dcb21=new Checkbean (2, "3000-5000 Yuan", false); Checkbean dcb31=new Checkbean (3, "5000-8000 Yuan", false); Checkbean dcb41=new Checkbean (4, "8000-10000 Yuan", false); Checkbean dcb51=new Checkbean (5, "more than 10000 yuan", false);d Ata.add (DCB01);d ATa.add (DCB11);d ata.add (dcb21);d ata.add (dcb31);d ata.add (dcb41);d ata.add (dcb51); Map.put (1, data);d ata=new Arraylist<checkbean> (); Checkbean dcb02=new checkbean (0, "unlimited", false); Checkbean dcb12=new Checkbean (1, "No work Experience", false); Checkbean dcb22=new Checkbean (2, "less than 1 years", false); Checkbean dcb32=new Checkbean (3, "1-3 years working experience", false); Checkbean dcb42=new Checkbean (4, "3-5 years working experience", false); Checkbean dcb52=new Checkbean (5, "5-10 years working experience", false); Checkbean dcb62=new Checkbean (6, "10 years working experience", false);d Ata.add (DCB02);d ata.add (DCB12);d ata.add (dcb22);d Ata.add ( DCB32);d Ata.add (dcb42);d ata.add (dcb52);d ata.add (dcb62); Map.put (2, data);d ata=new arraylist<checkbean> (); Checkbean dcb03=new checkbean (0, "all", false); Checkbean dcb13=new Checkbean (1, "full-time", false); Checkbean dcb23=new Checkbean (2, "part-time", false); Checkbean dcb33=new Checkbean (3, "internship", False);d Ata.add (dcb03);d ata.add (dcb13);d ata.add (dcb23);d ata.add (dcb33); Map.put (3, data);} Public View GetView () {return View;} @Overridepublic void callbackposition (int type,int position) {//TODO auto-generated Method Stubif (type==1) {for (int i = 0; i < adapter_bar.getlist (). Size (); i++) {if (Adapter_bar.getlist ( ). Get (i). GetId () ==position) {adapter_bar.getlist (). get (i). SetCheck (true);} Else{adapter_bar.getlist (). get (i). SetCheck (False);}} Adapter_data.setlist (Map.get (position)); adapter_bar.notifydatasetchanged (); Adapter_data.notifydatasetchanged () ; Listview_data.post (New Runnable () {@Overridepublic void Run () {//TODO auto-generated method stubfor (int i = 0; i < a Dapter_data.getlist (). Size (); i++) {if (Adapter_data.getlist (). get (i). Ischeck ()) {listview_data.setselectionfromtop (i, 0); return;}} Listview_data.setselectionfromtop (0, 0);});} else if (type==2) {int index=-1;for (int i = 0; i < adapter_data.getlist (). Size (); i++) {if (Adapter_data.getlist (). Get (i ). GetId () ==position) {Toast.maketext (activity, ":" +i, +). Show (); Adapter_data.getlist (). get (i). SetCheck (True); Index=i;} Else{adapter_data.getlist (). get (i). SetCheck (False);}} Adapter_data.notifydatasetchanged ();//int indexstart=-1;for (int i = 0; i < adapter_bar.getlist (). Size (); i++) {if (Adapter_bar.getlist (). get (i). Ischeck ()) {indexstart=i; for (int j = 0; J < Map.get (i). Size (); j + +) {if (J==index) {map.get (i). Get (Index). SetCheck (True); Else{map.get (i). Get (J). SetCheck (False);}}} for (int i = 0; i < map.size (), i++) {for (int j = 0; J < Map.get (i). Size (); j + +) {if (Map.get (i). Get (J). Ischeck ()) {C Heckstring.put (Adapter_bar.getlist (). get (i). GetName (), Map.get (i). Get (J). GetName ());}} Check_value.settext ("You are currently selected:" +checkstring.tostring ());}}}
Resources: http://download.csdn.net/detail/anddroid_lanyan/8229077
Android Popuwindow navigation chain-level filtering