我在片段中有一个可扩展的列表视图,其中包含我有不同产品的部分。我在行动栏中有searchview,我在那里搜索产品。
现在我所做的是在加载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);
}
}
当我的片段在可扩展列表视图中加载数据时,我调用了collapseAll()方法。
现在,如果我在搜索产品时调用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();
}
我面临的问题是,当我在我的expandAll()
中调用filterdata()
时,我的列表组得到了正确扩展但我的软键盘消失了。我想在那里保留键盘,直到用户按下。
答案 0 :(得分:4)
它将像The Unknown一样工作,如下文
从搜索中,找出目标群组位置/数量,说目标属于数据适配器中的n
群组。
致电expListView.smoothScrollToPosition(n);
致电expListView.expandGroup(n);
这都不需要调用任何额外的方法。 SoftKey将保持在屏幕上。