1. 程式人生 > >擴充套件AutoCompleteTextView讓其預設顯示一組列表。

擴充套件AutoCompleteTextView讓其預設顯示一組列表。

很多時候, 在做自動下拉框時,預設點上去時需要顯示一組預設的下拉資料。但是預設的AutoCompleteTextView是實現不了的, 因為setThreshold方法最小值是1,就算你設的值為0,也會自動改成1的。

Java程式碼  收藏程式碼
  1. /** 
  2.  * <p>Specifies the minimum number of characters the user has to type in the 
  3.  * edit box before the drop down list is shown.</p> 
  4.  * 
  5.  * <p>When <code>threshold</code> is less than or equals 0, a threshold of 
  6.  * 1 is applied.</p> 
  7.  * 
  8.  * @param threshold the number of characters to type before the drop down
     
  9.  *                  is shown 
  10.  * 
  11.  * @see #getThreshold() 
  12.  * 
  13.  * @attr ref android.R.styleable#AutoCompleteTextView_completionThreshold 
  14.  */


這時我們可以建立一個類 繼承AutoCompleteTextView,覆蓋enoughToFilter,讓其一直返回true就行。 然後再主動呼叫showDropDown方法, 就能在不輸入任何字元的情況下顯示下拉框。

Java程式碼  收藏程式碼
  1. package com.wole.android.pad.view;  
  2. import
     android.content.Context;  
  3. import android.graphics.Rect;  
  4. import android.util.AttributeSet;  
  5. import android.widget.AutoCompleteTextView;  
  6. /** 
  7.  * Created with IntelliJ IDEA. 
  8.  * User: denny 
  9.  * Date: 12-12-4 
  10.  * Time: 下午2:16 
  11.  * To change this template use File | Settings | File Templates. 
  12.  */
  13. publicclass InstantAutoComplete 
    extends AutoCompleteTextView {  
  14.     privateint myThreshold;  
  15.     public InstantAutoComplete(Context context) {  
  16.         super(context);  
  17.     }  
  18.     public InstantAutoComplete(Context context, AttributeSet attrs) {  
  19.         super(context, attrs);  
  20.     }  
  21.     public InstantAutoComplete(Context context, AttributeSet attrs, int defStyle) {  
  22.         super(context, attrs, defStyle);  
  23.     }  
  24.     @Override
  25.     publicboolean enoughToFilter() {  
  26.         returntrue;  
  27.     }  
  28.     @Override
  29.     protectedvoid onFocusChanged(boolean focused, int direction,  
  30.                                   Rect previouslyFocusedRect) {  
  31.         super.onFocusChanged(focused, direction, previouslyFocusedRect);  
  32.         if (focused) {  
  33.             performFiltering(getText(), 0);  
  34.             showDropDown();  
  35.         }  
  36.     }  
  37.     publicvoid setThreshold(int threshold) {  
  38.         if (threshold < 0) {  
  39.             threshold = 0;  
  40.         }  
  41.         myThreshold = threshold;  
  42.     }  
  43.     publicint getThreshold() {  
  44.         return myThreshold;  
  45.     }  
  46. }  


Java程式碼  收藏程式碼
  1. searchSuggestionAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, new ArrayList<String>(5));  
  2.    search_et.setAdapter(searchSuggestionAdapter);  
  3.    search_et.addTextChangedListener(new TextWatcher() {  
  4.        @Override
  5.        publicvoid beforeTextChanged(CharSequence s, int start, int count, int after) {  
  6.        }  
  7.        @Override
  8.        publicvoid onTextChanged(CharSequence s, int start, int before, int count) {  
  9.        }  
  10. 沒有輸入任何東西 則顯示預設列表,否則呼叫介面,展示下拉列表  
  11.        @Override
  12.        publicvoid afterTextChanged(Editable s) {  
  13.            if (s.length() >= 1) {  
  14.                if (fetchSearchSuggestionKeywordsAsyncTask != null) {  
  15.                    fetchSearchSuggestionKeywordsAsyncTask.cancel(true);  
  16.                }  
  17.                fetchSearchSuggestionKeywordsAsyncTask =new FetchSearchSuggestionKeywordsAsyncTask();  
  18.                fetchSearchSuggestionKeywordsAsyncTask.execute();  
  19.            }else{  
  20.                showHotSearchKeywords();  
  21.            }  
  22.        }  
  23.    });  
  24.    search_et.setOnItemClickListener(new OnItemClickListener() {  
  25.        @Override
  26.        publicvoid onItemClick(AdapterView<?> parent, View view, int position, long id) {  
  27.            String item = searchSuggestionAdapter.getItem(position);  
  28.            search_et.setText(item);  
  29.            search_btn.performClick();  
  30.        }  
  31.    });  
  32.     //點選autocompletetextview時,如果沒有輸入任何東西 則顯示預設列表
  33.    search_et.setOnTouchListener(new View.OnTouchListener() {  
  34.        @Override
  35.        publicboolean onTouch(View v, MotionEvent event) {  
  36.            if (TextUtils.isEmpty(search_et.getText().toString())) {  
  37.                showHotSearchKeywords();  
  38.            }  
  39.            returnfalse;  
  40.        }  
  41.    });  


Java程式碼  收藏程式碼
  1. //這裡發現很奇怪的事情, 需要每次new一個ArrayAdapter,要不然有時呼叫showDropDown不會有效果
  2. privatevoid showHotSearchKeywords() {  
  3.         MiscUtil.prepareHotSearchKeywords(getWoleApplication());  
  4.         searchSuggestionAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, getWoleApplication().hotSearchHistoryKeywords);  
  5.         search_et.setAdapter(searchSuggestionAdapter);  
  6.         searchSuggestionAdapter.notifyDataSetChanged();  
  7.         search_et.showDropDown();  
  8.     }  
  9.     privateclass FetchSearchSuggestionKeywordsAsyncTask extends AsyncTask<Void, Void, List<String>> {  
  10.         @Override
  11.         protected List<String> doInBackground(Void... params) {  
  12.             List<String> rt = new ArrayList<String>(5);  
  13.             String keyword = search_et.getText().toString();  
  14.             if (!TextUtils.isEmpty(keyword)) {  
  15.                 try {  
  16.                     String result = NetworkUtil.doGet(BaseActivity.this, String.format(Global.API_SEARCH_SUGGESTIOIN_KEYWORDS, URLEncoder.encode(keyword, "utf-8")), false);  
  17.                     Log.i("FetchSearchSuggestionKeywordsAsyncTask", result);  
  18.                     if (!TextUtils.isEmpty(result)) {  
  19.                         JSONArray array = new JSONArray(result);  
  20.                         for (int i = 0; i < array.length(); i++) {  
  21.                             JSONObject jsonObject = array.getJSONObject(i);  
  22.                             rt.add(jsonObject.optString("keyword"));  
  23.                         }  
  24.                     }  
  25.                 } catch (Exception e) {  
  26.                     e.printStackTrace();  
  27.                 }  
  28.             }  
  29.             return rt;  
  30.         }  
  31.         @Override
  32.         protectedvoid onPostExecute(List<String> strings) {  
  33.             super.onPostExecute(strings);  
  34.             if (!strings.isEmpty()) {  
  35. //這裡發現很奇怪的事情, 需要每次new一個ArrayAdapter,要不然有時呼叫showDropDown不會有效果
  36.                 searchSuggestionAdapter = new ArrayAdapter<String>(BaseActivity.this, android.R.layout.simple_dropdown_item_1line, strings);  
  37.                 search_et.setAdapter(searchSuggestionAdapter);  
  38.                 searchSuggestionAdapter.notifyDataSetChanged();  
  39.             }  
  40.         }  
  41.     } 

相關推薦

擴充套件AutoCompleteTextView預設顯示列表

很多時候, 在做自動下拉框時,預設點上去時需要顯示一組預設的下拉資料。但是預設的AutoCompleteTextView是實現不了的, 因為setThreshold方法最小值是1,就算你設的值為0,也會自動改成1的。 Java程式碼   /**  * <p>

TP框架裏面當訪問不存在的操作方法時顯示錯誤頁面

操作 pub 不顯示 public 錯誤 ech function 用戶 額外 當訪問空操作方法或者不存在的錯誤的操作方法的時候: 在該控制器頁面裏面寫一個   public function _empty(){     echo "您訪問的頁面有誤";   } 的

上下迴圈切換-只顯示中的其中一部分

前言:實現效果--型別於淘寶顯示圖片欄,一組4張展示圖片介紹,預設只顯示其中的3張,這裡是順著排列,並且可以迴圈。 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" />

art-template 模板定義變數並更改變數值 不輸出顯示

在使用art-template.js出現如下的場景: 比如,迴圈體外面定義變數,並且在迴圈體內改變變數的值 但我又不想讓其顯示出來。 那我們一步一步的來實現以上的場景 看看會出現什麼神奇的

css中絕對定位的元素如何居中顯示

對於前端工程師來說,頁面佈局是必備技能之一,我們經常有過這樣的需求,就是讓某個元素上下左右居中顯示的業務。常規來說一般水平居中使用margin:0 auto就能夠解決居中問題,但是當我們的元素居於父類是相對定位,自己是絕對定位的如何讓其相對於父類垂直居中對齊呢?

簡單java單例模式(單擊多次,如何視窗只顯示次)

1.將實現功能的建構函式設為private 2.在寫一個public的構造方法: 如下: private static AddPerson addPerson = null;  public static  synchronized AddPerson GetInstance

關於Echarts的formatter函式的自定義(影象上顯示資料的影象,當滑鼠移上去的時候顯示資料)

前幾天,有那麼一個專案,要用Echarts這款外掛,實現一個柱狀圖的展示一組資料,其他的資料當滑鼠以上去影象上的時候,相應的影象顯示相應資料組,如下圖 這是最終的效果圖 這是傳過來的json檔案 { "data": [ { "free_space": 2.94

SpringMVC----RESTFUL_CRUD_顯示所有員工信息(使用靜態數據)

pos mvc 3.5 work info under his app_id .org 1.實體類 package com.yikuan.springmvc.crud.entities; import java.util.Date; import javax.vali

編寫程序從cin讀取數,輸出

cin stream sum num += pac 編寫 name while #include <iostream> using namespace std; int main() { int num, sum = 0; while (cin

C語言,產生數字,並將寫入txt文件中

#include<stdio.h> /*產生一組連續的數字,並將其寫到txt文件中*/ /*說明:本程式在在win10 系統64位下用Dev-C++ 5.11版本編譯器編譯的*/int main(){ int m=1; FILE *fp=NULL; fp=fopen("D:\\1.txt","

作業——根據成績計算出至少需要發多少獎金才能所有的滿意

狐進行了一次黑客馬拉松大賽,全公司一共分為了N個組,每組一個房間排成一排開始比賽,比賽結束後沒有公佈成績,但是每個組能夠看到自己相鄰的兩個組裡比自己成績低的組的成績,比賽結束之後要發獎金,以1w為單位,每個組都至少會發1w的獎金,另外,如果一個組發現自己的獎金沒有高於比自己成績低的組發的獎金,就會不

新增後如需修改,如何下拉框的值預設顯示對應的值的方法

首先來個下拉框 html 使用單位: <select name="unitId" id="unitId"> <option value="">--請選擇--</option> </select> 然後使

輸入數字,找出排列的最小值

#include <iostream> using namespace std; void bubblesort(int a[], int x) {     int y, z;     for (y = 0; y <= x - 1; y++) {   

c# combobox 如何文字中顯示預設的第一條資料

有時間去看看 http://blog.csdn.net/wqygogo/article/details/3404703 http://my.csdn.net/sunrain_hjb

【琴絃上、漫步】堅持把自己做過的每件事記錄下來,變成種習慣

姓名:李國冬 英文名:wintfru GitHub: 點選進入 Email:liguodongiot AT foxmail DOT com 學校:西南石油大學 學歷:本科 專注:Java、Hadoop、Elasticsearch、Spring等

在VS裡建立Windows窗體,最小化在系統托盤,並顯示一個Icon圖示

C#實現系統托盤,C#窗體最小化時隱藏為工作列圖示的Window appllication 1.設定窗體屬性showintask=false   2.加notifyicon控制元件notifyicon1,為控制元件notifyicon1的屬性icon新增一個icon圖示。

CNN:(區域性感知+權共享機制:神經元使用相同的連線權)

(CNN主要用來識別位移、縮放及其他形式扭曲不變性的二維圖形。由於CNN的特徵檢測層通過訓練資料進行學習,所以在使用CNN時,避免了顯示的特徵抽取,而隱式地從訓練資料中進行學習;再者由於同一特徵對映面上的神經元權值相同,所以網路可以並行學習,這也是卷積網路相對於神經元彼此相連網路的一大優勢。卷積神經網路以其

區域性感知+權共享機制:神經元使用相同的連線權 和池化

提出:全連線的結構下會引起引數數量的膨脹,容易過擬合且區域性最優。影象中有固有的區域性模式可以利用,所以,提出了CNN,並不是所有上下層神經元都能直接相連,而是通過“卷積核”作為中介。同一個卷積核在所有影象內都是共享的,影象通過卷積操作後仍然保留原來的位置關係。 複合多個“卷積層”和“取樣層”對輸入

數字,求能組成的最大數?

//一組正整數,求用這組正整數對應的數字字串連在一起能組成的最大數 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXN 20 #define MA

php微信公眾號查詢出關注列表,查詢出超過萬粉絲的列表,並將合併到個數

$fansAll = []; $url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=$token"; $data = ihttp_get($url); $fansObj = $data['conte