如何针对if条件为AutocompleteTextview设置两个适配器

时间:2015-11-18 12:26:12

标签: android if-statement autocomplete autocompletetextview

我的应用中有两个带有单独列表视图的地址 一个用于用户,另一个用于组 我希望在条件存在时将适配器设置为textview,就像用户键入一个令牌时一样#' @'应该设置用户适配器,并且当用户键入令牌时##;#'应设置通道适配器(用于填充组列表) 我的适配器:

  final ChannelAdapter customadapter1 = new ChannelAdapter(getActivity(), R.layout.all_cahnnel_list_item, joinOtherChannelList);
        final UserAdapter customadapter = new UserAdapter(getActivity(), R.layout.all_user_list_item, userArrayList);

        inputMessageView = (MultiAutoCompleteTextView) view.findViewById(R.id.message_input);

        inputMessageView.setThreshold(0);

        inputMessageView.setTokenizer(new MultiAutoCompleteTextView.Tokenizer() {

            @Override
            public CharSequence terminateToken(CharSequence text) {
                int i = text.length();

                while (i > 0 && text.charAt(i - 1) == ' ') {
                    i--;
                }

                if (i > 0 && text.charAt(i - 1) == ' ') {
                    return text;
                } else {
                    if (text instanceof Spanned) {
                        SpannableString sp = new SpannableString(text + " ");
                        TextUtils.copySpansFrom((Spanned) text, 0, text.length(), Object.class, sp, 0);
                        return sp;
                    } else {
                        return text + " ";
                    }
                }
            }

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

                while (((i > 0 && text.charAt(i - 1) != '@') && (i > 0 && text.charAt(i - 1) != '#'))) {
                    i--;
                }//Check if token really started with @, else we don't have a valid token
                if (text.charAt(i - 1) != '@') {
                    inputMessageView.setAdapter(customadapter);

返回光标:                     } else if(i< 1 || text.charAt(i - 1)!='#'){                         inputMessageView.setAdapter(customadapter1);                         返回光标;                     }

                return i;
            }

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

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

                return len;
            }
        });

我的问题是当我使用if条件时,它可以用于自定义适配器。但是,当我使用if而其他如果设置两个适配器甚至单个适配器工作,我的意思是它没有在文本视图中显示任何东西

1 个答案:

答案 0 :(得分:2)

你的条件不一样。

if (text.charAt(i - 1) != '@') {
       inputMessageView.setAdapter(customadapter)
       return cursor;
} else if (i < 1 || text.charAt(i - 1) != '#') {
       inputMessageView.setAdapter(customadapter2);
       return cursor;
}

正如你所说的那样,如果条件适用,那么它应该起作用,因为否则如果部分没有被执行。尝试使用日志并尝试打印日志。