Android general search functionality似乎还有很好的系统支持来显示搜索建议,例如最近的查询建议和自定义建议。
此框架需要一个人来声明搜索活动。该活动在intent中获取查询,并将搜索结果呈现给ListView。
我有两个问题:
1-我想在当前活动中进行搜索(我在appbar上有一个搜索视图)。那么,该活动是否会重新启动?那会很奇怪。我应该发送一个不可见的活动并取回结果吗?这可能吗?
2-我可以使用RecyclerView而不是ListView吗?我认为不推荐使用ListView而转而使用RecyclerView。
答案 0 :(得分:0)
我想在当前活动中进行搜索(我有一个searchview 在appbar上)。那么,该活动会重新启动吗?
没有。 (如果你当然实施搜索)
我可以使用RecyclerView而不是ListView吗?我以为ListView是 不赞成使用RecyclerView。
是的,您可以使用RecyclerView
基本上要在RecyclerView
中实现搜索,你必须在适配器类中创建一个公共方法,其参数为List
,数据类如下:
public void setFilter(ArrayList<Items> ItemList){
Items = new ArrayList<>();
Items.addAll(ItemList);
notifyDataSetChanged();
//Items will be your custom data class
}
然后在Activity
中实施SearchView.OnQueryTextListener
接口并在onQueryTextSubmit
中覆盖方法onQueryTextChange
和onQueryTextChange
之后实现搜索的 @Override
public boolean onQueryTextChange(String newText) {
newText = newText.toLowerCase();
ArrayList<Items> ItemArrayList = new ArrayList<>();
for(Items Item : Items) //Items your data class containg data provided to adapter
{
String name = Item.getTitle().toLowerCase(); // getTitle or getName dependes what you have in Item class
if(name.contains(newText))
ItemArrayList.add(Item);
}
adapter.setFilter(ItemArrayList); // adapter will be instance of adapter class
return true;
}
中,您可以执行类似的操作这样:
echo '<div id="id01" class="w3-modal">
<div class="w3-modal-content">
<div class="w3-container">
<span onclick="document.getElementById(\'id01\').style.display=\'none\'" class="w3-button w3-display-topright">×</span><center><form method=\'POST\' action=\''.setComments($conn).'\'>
<textarea name=\'title\'></textarea>
<input type=\'hidden\' name=\'uid\' value=\''. $_SESSION['username'] . '\'>
<input type=\'hidden\' name=\'date\' value=\'' .date('Y-m-d H:i:s'). '\'>
<textarea name=\'description\'></textarea>
<textarea name=\'message\'></textarea><br> <button type=\'submit\' name=\'commentSubmit\'>Post!</button>
</form></center>
</div>
</div>
</div>
</div>';