亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android編程實現二級下拉菜單及快速搜索的方法

2020-04-11 11:18:19
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程實現二級下拉菜單及快速搜索的方法。分享給大家供大家參考,具體如下:

一、我們要做什么?

上面有個搜索框,下面是一個二級下拉菜單。

輸入查詢內容,下面列表將顯示查詢結果。

二、界面設計

(1)這是主框架(部分屬性已經省去,請看源碼),從上至下分別是文本框,列表,二級列表。

<?xml version="1.0" encoding="utf-8"?><LinearLayout> <LinearLayout  android:id="@+id/city_middle">  <EditText   android:id="@+id/txtfind"   android:hint="請輸入" >  </EditText>  <ListView   android:id="@+id/listfind" >  </ListView>  <ExpandableListView   android:id="@+id/exList" /> </LinearLayout></LinearLayout>

(2)一級菜單欄樣式,圖片將區別是否展開

<?xml version="1.0" encoding="utf-8"?><LinearLayout > <TextView  android:id="@+id/group" > </TextView> <ImageView  android:id="@+id/tubiao"> </ImageView></LinearLayout>

(3)二級菜單欄樣式

<?xml version="1.0" encoding="utf-8"?><LinearLayout > <TextView  android:id="@+id/child"> </TextView></LinearLayout>

三、代碼設計

(1) 定義菜單對應數據

public static List<BasicNameValuePair> fatherList = new ArrayList<BasicNameValuePair>();public static List<List<BasicNameValuePair>> childList = new ArrayList<List<BasicNameValuePair>>();

生成測試數據

for (int i = 0; i < 20; i++) { fatherList.add(new BasicNameValuePair("father" + i, "father" + i)); List<BasicNameValuePair> cList = new ArrayList<BasicNameValuePair>(); for (int j = 0; j < 5; j++) {  cList.add(new BasicNameValuePair("child" + i + ":" + j, "child"    + i + ":" + j)); } childList.add(cList);}

(2)定義列表適配器

protected class ListAdapter extends BaseAdapter {  private LayoutInflater mInflater;  //查詢結果列表  private List<BasicNameValuePair> list = new ArrayList<BasicNameValuePair>();  public ListAdapter(Context context, String strin) {   mInflater = LayoutInflater.from(context);   //查詢匹配   for (int i = 0; i < childList.size(); i++) {    for (int j = 0; j < childList.get(i).size(); j++) {     String tmp = childList.get(i).get(j).getValue();     if (tmp.indexOf(strin) >= 0) {      list.add(new BasicNameValuePair(childList.get(i).get(j)        .getName(), tmp));     }    }   }  }  public int getCount() {   return list.size();  }  public Object getItem(int position) {   return position;  }  public long getItemId(int position) {   return position;  }  public View getView(final int position, View convertView,    ViewGroup parent) {   convertView = mInflater.inflate(R.layout.child, null);   TextView title = (TextView) convertView.findViewById(R.id.child);   title.setText(list.get(position).getValue());   return convertView;  } }

初始化列表,默認為隱藏

list = (ListView) findViewById(R.id.listfind);list.setVisibility(View.GONE);

(3)定義二級列表適配器

protected class ExAdapter extends BaseExpandableListAdapter {  @Override  public int getGroupCount() {   return fatherList.size();  }  @Override  public int getChildrenCount(int groupPosition) {   return childList.get(groupPosition).size();  }  @Override  public Object getGroup(int groupPosition) {   return fatherList.get(groupPosition).getValue();  }  @Override  public Object getChild(int groupPosition, int childPosition) {   return childList.get(groupPosition).get(childPosition).getValue();  }  @Override  public long getGroupId(int groupPosition) {   return groupPosition;  }  @Override  public long getChildId(int groupPosition, int childPosition) {   return childPosition;  }  @Override  public View getGroupView(int groupPosition, boolean isExpanded,    View convertView, ViewGroup parent) {   View view = convertView;   if (view == null) {    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);    view = inflater.inflate(R.layout.group, null);   }   TextView t = (TextView) view.findViewById(R.id.group);   t.setText(fatherList.get(groupPosition).getValue());   //展開,改變圖片   ImageView gImg = (ImageView) view.findViewById(R.id.tubiao);   if (isExpanded)    gImg.setBackgroundResource(R.drawable.mm_submenu_down_normal);   else    gImg.setBackgroundResource(R.drawable.mm_submenu_normal);   return view;  }  @Override  public View getChildView(int groupPosition, int childPosition,    boolean isLastChild, View convertView, ViewGroup parent) {   View view = convertView;   if (view == null) {    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);    view = inflater.inflate(R.layout.child, null);   }   TextView t = (TextView) view.findViewById(R.id.child);   t.setText(childList.get(groupPosition).get(childPosition)     .getValue());   return view;  }  @Override  public boolean hasStableIds() {   return true;  }  @Override  public boolean isChildSelectable(int groupPosition, int childPosition) {   return true;  }}

初始化二級菜單

exList = (ExpandableListView) findViewById(R.id.exList);exList.setAdapter(new ExAdapter());exList.setGroupIndicator(null);exList.setDivider(null);

(4)搜索事件,輸入改變即觸發

txtFind = (EditText) findViewById(R.id.txtfind);txtFind.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count,   int after) { } @Override public void onTextChanged(CharSequence s, int start, int before,   int count) { } @Override public void afterTextChanged(Editable s) {  if (s != null && !s.toString().equals("")) {   list.setAdapter(new ListAdapter(DWinterDemoActivity.this, s     .toString()));   list.setVisibility(View.VISIBLE);   exList.setVisibility(View.GONE);  } else {   list.setVisibility(View.GONE);   exList.setVisibility(View.VISIBLE);  } }});

(5)去除焦點自動彈出輸入

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人avxxxxx在线看| 一区二区三区美女xx视频| 亚洲国产成人精品女人久久久| 日韩av电影在线网| 午夜精品www| 亚洲视频在线观看网站| 韩国一区二区电影| 97久久精品人人澡人人爽缅北| 成人黄色av播放免费| 亚洲国产成人一区| 国产欧美精品在线播放| 在线观看久久久久久| 日韩成人高清在线| 国产成人精品av在线| 欧美大全免费观看电视剧大泉洋| 日本成熟性欧美| 国产精品电影久久久久电影网| 欧美大码xxxx| 97久久精品人人澡人人爽缅北| 色哟哟网站入口亚洲精品| 亚洲精品天天看| 欧美日韩午夜剧场| 日本高清久久天堂| 中文字幕日韩精品在线| 91久久精品国产91久久性色| 国产亚洲精品美女| 亚洲精品国产拍免费91在线| 久久福利网址导航| 中文字幕精品久久久久| 国产精品影院在线观看| 中文字幕精品一区二区精品| 亚洲第一区在线观看| 国产主播精品在线| 欧美一级大片在线观看| 青草青草久热精品视频在线观看| 色噜噜亚洲精品中文字幕| 国产日韩一区在线| 久久国产精品偷| 亚洲成人激情视频| 国产视频精品va久久久久久| 亚洲一区二区黄| 中文在线资源观看视频网站免费不卡| 欧美激情第6页| 国产成人在线播放| 亚洲欧洲在线视频| 亚洲综合精品一区二区| 亚洲色图欧美制服丝袜另类第一页| 成人写真视频福利网| 日韩国产在线看| 久久免费视频这里只有精品| 91视频88av| 国产精品自产拍在线观看中文| 久久久精品日本| 久久乐国产精品| 欧美中文字幕在线播放| 亚洲xxxx在线| 国产专区精品视频| 中文字幕成人在线| 97**国产露脸精品国产| 97久久精品人人澡人人爽缅北| 国产精品自产拍高潮在线观看| 色偷偷888欧美精品久久久| 成人国产在线激情| 国产视频丨精品|在线观看| 亚洲自拍欧美另类| 午夜免费日韩视频| 成人精品在线视频| 欧美成人sm免费视频| 欧美在线国产精品| 国产一区二区黑人欧美xxxx| 亚洲欧美激情精品一区二区| 亚洲精品一区二三区不卡| 国产主播欧美精品| 欧美成人免费va影院高清| 国产欧美亚洲视频| 一区二区三区www| 色综久久综合桃花网| 国产精品第一页在线| 57pao国产成人免费| 国产精品久久久久av| 久久综合久久美利坚合众国| 欧美精品videos| 亚洲男人天堂手机在线| 国产精品热视频| 色噜噜国产精品视频一区二区| 亚洲视频第一页| 91精品国产自产在线观看永久| 国产丝袜一区二区三区免费视频| 久久精品色欧美aⅴ一区二区| 久久av.com| 久久精品成人欧美大片古装| 宅男66日本亚洲欧美视频| 不用播放器成人网| 欧美日韩成人在线视频| 亚洲最大福利视频| 国产精品欧美日韩久久| 亚洲网站视频福利| 欧美成人免费视频| 国产精品日韩在线| 国产精品高潮呻吟久久av野狼| 国产丝袜一区二区三区| 亚洲www视频| 尤物99国产成人精品视频| 亚洲精品视频免费在线观看| 国产精品久久久久免费a∨| 欧美精品久久久久久久久| 一本色道久久88亚洲综合88| 国产精品高清在线| 欧美视频中文字幕在线| 国产成人黄色av| 日产精品久久久一区二区福利| 亚洲深夜福利视频| 91久久国产婷婷一区二区| 亚洲小视频在线| 欧美另类精品xxxx孕妇| 性金发美女69hd大尺寸| 国产亚洲一区精品| 国产亚洲精品综合一区91| 精品亚洲一区二区| 国产精品96久久久久久又黄又硬| 亚洲免费高清视频| 日韩精品免费一线在线观看| 欧美一级bbbbb性bbbb喷潮片| 欧美黑人巨大精品一区二区| 欧美在线免费观看| 亚洲第一二三四五区| 亚洲精品资源美女情侣酒店| 国产激情综合五月久久| 欧美大学生性色视频| 69久久夜色精品国产69乱青草| 国产欧美精品日韩精品| 亚洲美女性视频| 欧美性猛交xxxxx水多| 久久精品视频免费播放| 国产成人97精品免费看片| 久久精品视频亚洲| 日韩免费电影在线观看| 自拍偷拍免费精品| 一区二区亚洲欧洲国产日韩| 国产亚洲欧美日韩精品| 欧美精品久久一区二区| 日韩av日韩在线观看| 亚洲人成毛片在线播放| 国产精品7m视频| 久久久久国产一区二区三区| 久久全球大尺度高清视频| 国产精品视频男人的天堂| 91美女福利视频高清| 国产精品电影一区| 91av在线影院| 成人综合网网址| 亚洲欧洲免费视频| 成人黄色免费网站在线观看| 久久色免费在线视频| 992tv成人免费视频| 555www成人网| 欧美在线视频一区二区| 欧美国产亚洲精品久久久8v| 久久久久久有精品国产| 欧美高清视频在线播放| 欧美日韩性视频| 日韩激情在线视频| 国产精品自产拍在线观| 国产精品96久久久久久|