从搜索视图搜索时,在可扩展列表视图中扩展组
作者:互联网
我有一个可扩展的listview片段,其中包含一节,在该节下我有不同的产品.我在操作栏上有searchview,可以从那里搜索产品.
现在我要做的是在加载列表视图时折叠所有组,现在当用户开始搜索产品时,我想过滤各自完成的组,但结果是该组没有得到扩展,(希望我不会让事情变得很混乱…)
现在,我在搜索视图中搜索产品名称“ sony”,并得到了过滤结果,但组没有扩展,我想扩展组并显示相关组下的产品名称.
我创建了这两种方法:
private void expandAll()
{
int count = listAdapter.getGroupCount();
for (int i = 0; i < count; i++)
{
expListView.expandGroup(i);
}
}
private void collapseAll()
{
int count = listAdapter.getGroupCount();
for (int i = 0; i < count; i++)
{
expListView.collapseGroup(i);
}
}
当我的片段将数据加载到可扩展列表视图中时,我调用了crashAll()方法.
所以现在,如果我在搜索产品时调用了expandAll()方法,但未获得预期的结果.
这就是我过滤列表的方式:
public void filterData(String query)
{
//query = query.toLowerCase();
//query=query;
ArrayList<ProSectionName> filterProSectionNames=prepareFilterListData(query);
if(query.isEmpty())
{
if(txtNoProductMessage.getVisibility()==View.VISIBLE)
{
txtNoProductMessage.setVisibility(View.GONE);
}
listDataHeader.addAll(mNewTopupGroupCollection);
}
if(filterProSectionNames!=null && filterProSectionNames.size()>0)
{
if(txtNoProductMessage.getVisibility()==View.VISIBLE)
{
txtNoProductMessage.setVisibility(View.GONE);
}
listDataHeader.clear();
for(ProSectionName proSectionName : mNewSectionGroupCollection)
{
ArrayList<ProSectionName.Products> productList = proSectionName.getProductList();
ArrayList<ProSectionName.Products> newProductList = new ArrayList<ProSectionName.Products>();
for(ProSectionName.Products products : productList)
{
if(products.getProductName().toLowerCase().contains(query.toLowerCase()) ||products.getProductName().toLowerCase().contains(query.toLowerCase()))
{
newProductList.add(products);
}
}
if(newProductList.size() > 0)
{
ProSectionName proSectionName = new ProSectionName(ProSectionName.getsectionName(),newProductList);
listDataHeader.add(topupSectionName);
//expandAll();
}
else
{
txtNoProductMessage.setVisibility(View.VISIBLE);
txtNoProductMessage.setText("No Match Found...");
}
}
//Log.v("MyListAdapter", String.valueOf(topupProducts.size()));
}
else
{
txtNoProductMessage.setVisibility(View.VISIBLE);
txtNoProductMessage.setText("No Match Found...");
}
notifyDataSetChanged();
}
我面临的问题是,当我在filterdata()中调用expandAll()时,列表组已正确展开,但软键盘消失了.我也想将键盘保持在那里,直到用户按下.
解决方法:
它将按照《未知》的指示工作
>从搜索中找出目标的组位置/数量,例如目标在您的数据适配器中属于n个组.
>调用expListView.smoothScrollToPosition(n);
>调用expListView.expandGroup(n);
不需要调用任何其他方法.软键将保持原样显示在屏幕上.
标签:android-fragments,listview,android-listview,expandablelistview,android 来源: https://codeday.me/bug/20191030/1964704.html