2012-12-06 33 views
1

我想在android自動完成文本視圖中添加永久搜索結果。 例如:如果我在自動填充中輸入'x',並且它顯示酒店列表... xyz1,xyz2.etc ...那麼最後的結果必須是「NOT IN LIST」值。如果用戶不能找到他們的酒店,那麼他們可以選擇不在列表選項。在自動完成文本視圖中添加永久搜索標題android

即使用戶在文本中鍵入預測搜索無法給出,那麼'NOT IN LIST'應該是唯一的建議,即自動完成應該給。我是Android新手。我正在做一個小app.Plz的幫助。如果我必須使用自定義自動完成文本視圖,那麼我應該重寫什麼方法?如果是這樣,請告訴我一個方法代碼,我必須覆蓋

+0

你使用什麼樣的適配器爲'AutoComp leteTextView'? – Luksprog

+0

我使用arrayadapter ..這是從本地json文件填充 本地json(解析) - >字符串數組 - > arrayadapter – user1879614

回答

1

這是我在其中一個應用中使用的AutoCompleteAdapter。我希望這能解決你的問題

將適配器從下面到您的AutoCompleteTextView控制:

ArrayAdapter<String> adapter = new AutoCompleteAdapter(this, 
      R.layout.dropdown_item); 

    autoComplete.setAdapter(adapter); 

樣品適配器:

private class AutoCompleteAdapter extends ArrayAdapter<String> 
     implements Filterable { 
    private ArrayList<String> mData; 

    public AutoCompleteAdapter(Context context, int textViewResourceId) { 
     super(context, textViewResourceId); 
     mData = new ArrayList<String>(); 
    } 

    @Override 
    public int getCount() { 
     try { 
      return mData.size(); 
     } catch (NullPointerException e) { 
      return 0; 
     } 
    } 

    @Override 
    public String getItem(int index) { 
     return mData.get(index); 
    } 

    @Override 
    public Filter getFilter() { 
     Filter myFilter = new Filter() { 
      @Override 
      protected FilterResults performFiltering(CharSequence constraint) { 
       FilterResults filterResults = new FilterResults(); 
       if (constraint != null) { 
        //This shows a progress to the user in my app. you don't need to use this 
        handle.sendEmptyMessage(MSG_SHOW_PROGRESS); 
        try { 
         //Fill mData with your data 
         mData = XmlParser.searchLocations(constraint 
           .toString()); 
        } catch (Exception e) { 
         handle.sendEmptyMessage(MSG_HIDE_PROGRESS); 
        } 
        mData.add("NOT IN LIST"); 
        filterResults.values = mData; 
        filterResults.count = mData.size(); 
       } 
       return filterResults; 
      } 

      @Override 
      protected void publishResults(CharSequence contraint, 
        FilterResults results) { 
       if (results != null && results.count > 0) { 
        notifyDataSetChanged(); 
        handle.sendEmptyMessage(MSG_HIDE_PROGRESS); 
       } else { 
        notifyDataSetInvalidated(); 
        handle.sendEmptyMessage(MSG_HIDE_PROGRESS); 
       } 
      } 
     }; 
     return myFilter; 
    } 
} 
+0

@ user1879614上面發佈的代碼將始終添加「NOT IN LIST」到搜索結果中,isn'你所要求的是什麼? – dxjankov

+0

你知道我是android新手。我嘗試了最後一個小時左右,並得到它...對不起(作爲一個白癡。非常感謝.. – user1879614

+0

我想添加一個ArrayList 在mdata。自動完成停止工作,它顯示所有的預測搜索任何字符輸入。怎麼辦? – user1879614

0
if (constraint != null) { 

    try { 
     for(int i=0;i<temp.size();i++) 
     { 
     if(temp.get(i).toString().startsWith(constraint.toString().toUpperCase())) 
     { 

     mData.add(temp.get(i).toString()); 

     } 
     } 


     mData.add("SEARCH NOT THERE"); 

    } catch (Exception e) { 

    } 


     filterResults.values = mData; 
     filterResults.count = mData.size(); 




} 
return filterResults; 

我已經做了我的過濾...但仍然是顯示所有的結果,而不是我輸入的任何內容...... :(

+0

中開始添加新項目之前清除'mData',您應該編輯您的問題,而不是在答案部分中發佈另一個問題,並且不要在編輯問題時包含編輯摘要 – dxjankov