欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android輸入框?qū)崟r(shí)模糊搜索效果的示例代碼

 更新時(shí)間:2020年08月07日 15:01:06   作者:Cola可洛  
這篇文章主要介紹了Android輸入框?qū)崟r(shí)模糊搜索效果的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

Android輸入框?qū)崟r(shí)模糊搜索

很多開(kāi)發(fā)場(chǎng)景會(huì)用到搜索框?qū)崟r(shí)模糊搜索來(lái)幫助用戶輸入內(nèi)容,如圖

模糊搜索效果

思路是在EditText 字符變動(dòng)的時(shí)候 彈出ListPopupwindow并更新列表,這樣的做法google已經(jīng)封裝為AutoCompleteTextView

用法

mAutoCompleteTextView.setAdapter(adapter);
  mAutoCompleteTextView.setFocusable(true);
  mAutoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
   @Override
   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
   
   }
  });

adapter自定義
Adapter 繼承 BaseApdater 需要實(shí)現(xiàn) Filterable 接口

private class SearchAdapter extends BaseAdapter implements Filterable {

  private Context mContext;

  public SearchAdapter(Context context) {
   super();
   this.mContext = context;
  }

  @Override
  public int getCount() {
   if (mSearchCustomEntities == null) {
    return 0;
   } else {
    return mSearchCustomEntities.size();
   }
  }

  @Override
  public Object getItem(int position) {
   if (mSearchCustomEntities == null) {
    return null;
   } else {
    return mSearchCustomEntities.get(position);
   }

  }

  @Override
  public long getItemId(int position) {
   return position;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
   ViewHolder holder = null;
   if (convertView == null) {
    holder = new ViewHolder();
    convertView = LayoutInflater.from(mContext).inflate(R.layout.item_search_custom, null, false);
    holder.tag = (TextView) convertView.findViewById(R.id.tv_custome_type);
    holder.name = (TextView) convertView.findViewById(R.id.custom_name);
    holder.phone = (TextView) convertView.findViewById(R.id.tv_phone);
    convertView.setTag(holder);
   } else {
    holder = (ViewHolder) convertView.getTag();
   }
   holder.phone.setText(mSearchCustomEntities.get(position).phone);
   holder.name.setText(mSearchCustomEntities.get(position).name);
   if (mSearchCustomEntities.get(position).type == CustomerType.TEMPORARY_CUSTOMER.getType()) {
    holder.tag.setVisibility(View.VISIBLE);
    holder.tag.setText(mContext.getString(R.string.tag_temp));
    holder.tag.setTextColor(mContext.getResources().getColor(R.color.customer_temp_txt));
    holder.tag.setBackground(mContext.getResources().getDrawable(R.drawable.bg_solid_quote_type_inner_temp));
   } else if (mSearchCustomEntities.get(position).type == CustomerType.COLLECTIVE_UNIT.getType()) {
    holder.tag.setVisibility(View.VISIBLE);
    holder.tag.setText(mContext.getString(R.string.tag_unit));
    holder.tag.setTextColor(mContext.getResources().getColor(R.color.customer_unit_txt));
    holder.tag.setBackground(mContext.getResources().getDrawable(R.drawable.bg_solid_quote_type_inner_unit));
   } else if (mSearchCustomEntities.get(position).type == CustomerType.OUTER_MOTORCADE.getType()) {
    holder.tag.setVisibility(View.VISIBLE);
    holder.tag.setText(mContext.getString(R.string.tag_car));
    holder.tag.setTextColor(mContext.getResources().getColor(R.color.customer_car_txt));
    holder.tag.setBackground(mContext.getResources().getDrawable(R.drawable.bg_solid_quote_type_inner_car));
   } else {
    holder.tag.setVisibility(View.GONE);
   }

   return convertView;
  }

  @Override
  public Filter getFilter() {
   if (mFilter == null) {
    mFilter = new ArrayFilter();
   }
   return mFilter;
  }
   private class ViewHolder {
   TextView tag;
   TextView name;
   TextView phone;
  }

自定義 過(guò)濾器

 private class ArrayFilter extends Filter {

   @Override
   protected FilterResults performFiltering(CharSequence prefix) {
    FilterResults results = new FilterResults();
    String prefixString = prefix.toString();


    //篩選部分
    
    XbcClient.getCustomList(prefixString, new EntitiesObserver<SearchCustomEntity>() {
     @Override
     protected void onGot(List<SearchCustomEntity> entities, String msg, int errCode) {
      if (entities != null && entities.size() > 0) {
       mSearchCustomEntities.clear();
       mSearchCustomEntities.addAll(entities);
       mSearchAdapter.notifyDataSetChanged();
      }else{
       if (mSearchCustomEntities!=null & mSearchCustomEntities.size()>0) {
        mSearchCustomEntities.clear();
        mSearchAdapter.notifyDataSetInvalidated();
       }
      }
     }
    });

    results.values = mSearchCustomEntities;
    results.count = mSearchCustomEntities.size();
    return results;
   }

總結(jié)

到此這篇關(guān)于Android輸入框?qū)崟r(shí)模糊搜索效果的示例代碼的文章就介紹到這了,更多相關(guān)android輸入框?qū)崟r(shí)模糊搜索內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android實(shí)現(xiàn)帶描邊的圓角圖片

    Android實(shí)現(xiàn)帶描邊的圓角圖片

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)帶描邊的圓角圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android開(kāi)發(fā)中Bitmap高效加載使用詳解

    Android開(kāi)發(fā)中Bitmap高效加載使用詳解

    在Android開(kāi)發(fā)中,我們經(jīng)常與Bitmap打交道,而對(duì)Bitmap的不恰當(dāng)?shù)牟僮鹘?jīng)常會(huì)導(dǎo)致OOM(Out of Memory)。這篇文章我們會(huì)介紹如何高效地在Android開(kāi)發(fā)中使用Bitmap,在保證圖片顯示質(zhì)量的前提下盡可能占用更小的內(nèi)存。
    2017-12-12
  • Android全局獲取Context實(shí)例詳解

    Android全局獲取Context實(shí)例詳解

    這篇文章主要介紹了Android全局獲取Context實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • WebView的幾個(gè)常見(jiàn)功能使用方法

    WebView的幾個(gè)常見(jiàn)功能使用方法

    本篇文章介紹了WebView的幾個(gè)常見(jiàn)功能,WebView的功能很強(qiáng)大,感興趣的小伙伴們可以了解一下。
    2016-11-11
  • Android編程獲取Wifi名稱(SSID)的方法

    Android編程獲取Wifi名稱(SSID)的方法

    這篇文章主要介紹了Android編程獲取Wifi名稱(SSID)的方法,涉及Android基于WifiManager和WifiInfo操作Wifi信息的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-05-05
  • Android開(kāi)發(fā)input問(wèn)題解決分析

    Android開(kāi)發(fā)input問(wèn)題解決分析

    這篇文章主要為大家介紹了Android開(kāi)發(fā)input問(wèn)題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Kotlin條件控制語(yǔ)句匯總講解

    Kotlin條件控制語(yǔ)句匯總講解

    條件控制是每門編程語(yǔ)言中必不可少的,一般就是使用我們所熟知的 ifelse ,來(lái)作為我們代碼邏輯選擇條件控制。 在 Java 中一般使用 ifelse 和 switch-case 來(lái)作為條件控制,而在 Kotlin 中則是使用 if-else 和 when 來(lái)作為條件控制
    2022-09-09
  • Android上下文菜單用法實(shí)例分析

    Android上下文菜單用法實(shí)例分析

    這篇文章主要介紹了Android上下文菜單用法,以完整實(shí)例形式分析了Android上下文菜單的定義、布局及功能實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • Android編程實(shí)現(xiàn)簡(jiǎn)單的UDP Client實(shí)例

    Android編程實(shí)現(xiàn)簡(jiǎn)單的UDP Client實(shí)例

    這篇文章主要介紹了Android編程實(shí)現(xiàn)簡(jiǎn)單的UDP Client,結(jié)合實(shí)例形式分析了Android實(shí)現(xiàn)UDP Clinet客戶端的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-04-04
  • Android普通應(yīng)用升級(jí)為系統(tǒng)應(yīng)用并獲取系統(tǒng)權(quán)限的操作

    Android普通應(yīng)用升級(jí)為系統(tǒng)應(yīng)用并獲取系統(tǒng)權(quán)限的操作

    這篇文章主要介紹了Android普通應(yīng)用升級(jí)為系統(tǒng)應(yīng)用并獲取系統(tǒng)權(quán)限的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03

最新評(píng)論