如何在Android表单中执行过滤后的类似select-option的下拉菜单?

时间:2018-10-05 12:11:58

标签: java android xml angular

我的情况是:在运行AsyncTask类的情况下,我将执行GET请求并从服务器中检索JSONArray,然后将其“绑定”到下拉菜单/选择选项/列表视图中,该列表视图将显示为水平。然后,用户将在其中输入EditText,这将过滤显示包含用户条目的元素的列表。 我已经使用Angular JS处理了这个scenerio,并且可以完美地与ng-model,ng-repeat和filter ..等配合 我正在尝试将我的webApp转换为Android。我是android的新手,我想一步一步地学习如何实现这一目标。

1 个答案:

答案 0 :(得分:0)

我建议您采用一种简单的方法来使自己成为android的新手!将此功能添加到您的listView适配器:

public void filterList(String searchText)
{
    ArrayList<C_ChatListItem> temp = new ArrayList<>();
    adapteritems = backupItems; // copy your Get response in backupItems for new searches in constructor
                                // then in every new search retrieve adapterIems
    if(searchText != null && searchText.length() > 0)
    {
        for (int i = 0 ; i < adapteritems.size() ; i++)
        {
            if(adapteritems.get(i).users_entry.contains(searchText))
                temp.add(item);
        }
        adapteritems = temp;
    }
    notifyDataSetChanged();
}

然后在您的活动中将textWatcher添加到您的搜索editText中,如下所示:

et_search.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            String txt = et_search.getText().toString();
            adapter.filterList(txt);
        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    });