gpt4 book ai didi

java - 使用 onGroupClick 和 onChildClick 搜索可扩展 ListView 显示错误结果

转载 作者:行者123 更新时间:2023-12-02 12:57:49 29 4
gpt4 key购买 nike

在可扩展 ListView 中搜索后,我的 onClick 出现问题。当我搜索时,我得到了正确的结果,但是当我单独单击这些值时,我得到了不同的结果?请帮忙

我过滤搜索数据的方法

public void filterData(String query){
query=query.toLowerCase();
parentRowArrayList.clear();

if(query.isEmpty()){
parentRowArrayList.addAll(originalList);
}else{
for(ParentRow parentRow:originalList){
ArrayList<ChildRow> childList = parentRow.getChildList();
ArrayList<ChildRow> newList = new ArrayList<>();

for(ChildRow childRow:childList){
if(childRow.getText().toLowerCase().contains(query)){
Toast.makeText(context, childRow.getText().toString(), Toast.LENGTH_SHORT).show();
newList.add(childRow);
}
}//end for ChildRow childRow:childList

if(newList.size()>0){
ParentRow newParentRow = new ParentRow(parentRow.getName(),newList);

parentRowArrayList.add(newParentRow);
}
} // end for ParentRow parentRow:originalList
} //end else


notifyDataSetChanged();
}

我的 OnChildClickListener

        myList.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {

@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
parentRowArrayList.get(groupPosition).getChildList()
.get(childPosition).getText() +"",
Toast.LENGTH_SHORT)
.show();
return false;
}
});

我的 OnGroupClickListener

   myList.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {

@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
Toast.makeText(getApplicationContext(),
"Group Clicked " + parentRowArrayList.get(groupPosition).getName(),
Toast.LENGTH_SHORT).show();
return false;
}
});

SearchView 实现的方法

   @Override
public boolean onClose() {
listAdapter.filterData("");
expandAll();
return false;
}

@Override
public boolean onQueryTextChange(String query) {
listAdapter.filterData(query);
myList.setAdapter(listAdapter);
listAdapter.notifyDataSetChanged();
expandAll();
return false;
}

@Override
public boolean onQueryTextSubmit(String query) {
listAdapter.filterData(query);
myList.setAdapter(listAdapter);
listAdapter.notifyDataSetChanged();
expandAll();
return false;
}

最佳答案

因为filterData方法位于适配器类中,并且它引用 Activity 的相同实例成员变量(即parentRowArrayList)和OnChildClickListener部分,所以这两个不同的方法指向两个不同的数据源。如果您在 OnChildClickListener 方法中引用适配器中的“arraylist”,将得到相同的结果。

关于java - 使用 onGroupClick 和 onChildClick 搜索可扩展 ListView 显示错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44367595/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com