是否可以过滤数组列表中的结果,然后将该列表添加到数组适配器?
Posted
技术标签:
【中文标题】是否可以过滤数组列表中的结果,然后将该列表添加到数组适配器?【英文标题】:Is it possible to filter the result in array list and then add that list to array adapter? 【发布时间】:2019-03-31 09:58:16 【问题描述】:// 我正在从 allShops 的数据库中获取数据 jsonArrayRequest jsonArrayRequest; jsonArrayRequest = new JsonArrayRequest(url, new Response.Listener() @覆盖 public void onResponse(JSONArray 响应)
for (int i = 0; i < response.length(); i++)
try
JSONObject jsonObject = response.getJSONObject(i);
//allShops is an arraylist
allShops.add(jsonObject.getString("name"));
catch (JSONException e)
e.printStackTrace();
//user enters text in edittext et_search
et_search.addTextChangedListener(new TextWatcher()
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
@Override
public void onTextChanged(CharSequence cs, int start, int before, int count)
@Override
public void afterTextChanged(Editable s)
//here i am adding arraylist to adapter but want it to happen after filtering the arraylist first based on users input
adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,allShops);
(Search.this).adapter.getFilter().filter(s);
lv_search.setAdapter(adapter);
);
【问题讨论】:
有可能吗?你试过什么,你在哪里卡住了?请在您的帖子中添加更多详细信息。 . 使用 java 流过滤它。这些mkyong.com/java8/java-8-streams-filter-examples 示例将对您有所帮助 谢谢@Lucefer 【参考方案1】:我更新了代码的闲置部分:
@Override
public void onTextChanged(CharSequence cs, int start, int before, int count)
if (cs.length()== 0)
adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,new ArrayList<String>());
//(Search.this).adapter.getFilter().filter(cs);
lv_search.setAdapter(adapter);
else
List<String> filtered = new ArrayList<String>();
for(String x:allShops)
if (x.toLowerCase().contains(cs.toString().toLowerCase()))
filtered.add(x);
adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,filtered);
lv_search.setAdapter(adapter);
【讨论】:
以上是关于是否可以过滤数组列表中的结果,然后将该列表添加到数组适配器?的主要内容,如果未能解决你的问题,请参考以下文章