2014-02-25 123 views
0

我已经实现了一个自动完成编辑文本,它确实显示建议,但我想实现不同的功能。自动完成文本视图不显示建议

现在,我有国家

private static final String[] COUNTRIES = new String[] { 
    "Belgium", "France", "Italy", "Germany", "Spain" 
}; 

的字符串,我在我的适配器调用它。现在,当我开始键入任何一个国家的名字,我的编辑文本开始展示了我的建议,但

我想是:

可以说,我想在编辑文本写法国的10倍,所以我想我的自动完成编辑文本给我的建议,当我开始打字法国等等,

但我的编辑文本给我的建议只有我输入的第一个字。我怎么能做到这一点,就像我的编辑文本如何为我输入的每个文本提供建议?

回答

0

在你的布局使用MultiAutoCompleteTextView,并执行这样的代码,在这里我使用commas

String[] colors = getResources().getStringArray(R.array.AndroidDesk); 

    adapter1 = new ArrayAdapter<String>(this,R.layout.suggestion_textview,colors); 

    //autoComplete = (AutoCompleteTextView) findViewById(R.id.autoComplete); 
    multiAutoComplete = (MultiAutoCompleteTextView) findViewById(R.id.editText1); 

    // set adapter for the auto complete fields 
// autoComplete.setAdapter(adapter); 
    multiAutoComplete.setAdapter(adapter1); 

    // specify the minimum type of characters before drop-down list is shown 
    //autoComplete.setThreshold(1); 
    multiAutoComplete.setThreshold(2); 
    // comma to separate the different colors 
    multiAutoComplete.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); 
+0

50%得到解决。现在剩下的唯一问题是我想要EnterTokenizer()这样的东西,有没有类似的东西存在? –

+0

这将是挑战...... –

0

使用MultiAutoCompleteTextView,而不是AutoCompleteTextView从

public class CountriesActivity extends Activity { 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.autocomplete_7); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_dropdown_item_1line, COUNTRIES); 
     MultiAutoCompleteTextView textView = (MultiAutoCompleteTextView) findViewById(R.id.edit); 
     textView.setAdapter(adapter); 
     textView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); 
    } 

    private static final String[] COUNTRIES = new String[] { 
     "Belgium", "France", "Italy", "Germany", "Spain" 
    }; 
} 

来源分裂:http://developer.android.com/reference/android/widget/MultiAutoCompleteTextView.html

+0

50%解决。现在剩下的唯一问题是我想要EnterTokenizer()这样的东西,有没有类似的东西存在? –

+0

您可能需要实现一个自定义字符串标记器。对于参考http://stackoverflow.com/questions/18120522/multiautocompletetextview-tokenizer-similar-to-facebook-app –

4

检查下面的代码,它会工作,就像你按空格键入一些东西,你会得到建议列表:

XML布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<MultiAutoCompleteTextView 
    android:id="@+id/macTvInput" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 


</RelativeLayout> 

代码:

public class MainActivity extends Activity { 

private static final String[] COUNTRIES = new String[] { "Belgium", 
     "France", "Italy", "Germany", "Spain" }; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_dropdown_item_1line, COUNTRIES); 
    MultiAutoCompleteTextView macTvInput = (MultiAutoCompleteTextView) findViewById(R.id.macTvInput); 
    macTvInput.setAdapter(adapter); 
    macTvInput.setTokenizer(new SpaceTokenizer()); 
} 

private class SpaceTokenizer implements Tokenizer { 

      private final char delimiter = ' '; 

    public int findTokenStart(CharSequence text, int cursor) { 
     int i = cursor; 

     while (i > 0 && text.charAt(i - 1) != delimiter) { 
      i--; 
     } 
     while (i < cursor && text.charAt(i) == delimiter) { 
      i++; 
     } 

     return i; 
    } 

    public int findTokenEnd(CharSequence text, int cursor) { 
     int i = cursor; 
     int len = text.length(); 

     while (i < len) { 
      if (text.charAt(i) == delimiter) { 
       return i; 
      } else { 
       i++; 
      } 
     } 

     return len; 
    } 

    public CharSequence terminateToken(CharSequence text) { 
     int i = text.length(); 
     while (i > 0 && text.charAt(i - 1) == delimiter) { 
      i--; 
     } 

     return text; 

    } 

} 
} 
+0

我已经实际上已经与spcaeTokenizer实施,但非常感谢你的代码。 1+为你 –

相关问题