如何在android中的多行编辑文本上实现搜索?

时间:2016-11-18 06:42:15

标签: java android search android-edittext multiline

  

我有一个搜索客户名称的编辑文本。它是一个多行   编辑文本字段。我想给最终用户添加的能力   单个编辑文本中的多个用户。

     

因此,名字中的最终用户类型从drop中选择用户   按下并按Enter键添加新用户。我能够搜索   第一个用户但无法搜索下一个用户。

以下是我正在使用的代码: -

public TextWatcher searchTextWatcher = new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void onTextChanged(CharSequence query, int start, int before, int count) {
        mRecyclerView.setVisibility(View.VISIBLE);
        query = query.toString().toLowerCase();

        final List<String> filteredList = new ArrayList<>();

        for (int i = 0; i < list.size(); i++) {

            String text = list.get(i).toLowerCase();
            if (query.length()>0 && query.subSequence(query.length()-1, query.length()).toString().equalsIgnoreCase("\n"))
            {
                String multiLines = query.toString();
                String[] names;
                String delimiter ="\n";

                names = multiLines.split(delimiter);
                ArrayList guest_info = new ArrayList(Arrays.asList(names));

                ListIterator<String> it = guest_info.listIterator();
                while (it.hasNext())
                {

                    String guest = it.next();
                    Log.d("Guest ", guest);
                    if (text.toLowerCase().contains(guest))
                    {
                        filteredList.add(list.get(i));
                    }
                }




            }else
            if(text.contains(query))
            {
                filteredList.add(list.get(i));
            }
        }
        mRecyclerView.setLayoutManager(new LinearLayoutManager(BookingActivity.this));
        guestAdapter = new GuestAdapter(filteredList, getApplicationContext(),BookingActivity.this);
        mRecyclerView.setAdapter(guestAdapter);
        guestAdapter.notifyDataSetChanged();  // data set changed

    }

    @Override
    public void afterTextChanged(Editable editable) {
        String name = editable.toString();
        if (name.equals(""))
        {
            mRecyclerView.setVisibility(View.GONE);
        }

    }
};

我是编程新手,所以感谢任何帮助或建议。谢谢。

0 个答案:

没有答案