ListView
과 함께 제공되는 getCount()
함수와 관련된 문제가 발생합니다. 나는 에 표시되는 행 수를 onQueryTextChange()
메서드로 필터링 할 때 SearchView
이 제공하는 행 수를 얻으려고합니다. 불행히도 숫자는 항상 하나의 반복으로 꺼집니다.. 예를 들어, ListView
의 4 개 항목으로 시작하여 ListView
에 1 개의 항목 만 포함되도록 필터하면 getCount()
함수는 1을 원한다고해도 4를 반환합니다. 그 후에 바로 필터를 다시 변경하면 1을 얻으십시오. onQueryTextChange()
메서드의 ListView
을 필터링 할 때 적절한 getCount()
번호가 부여되도록하려면 어떻게해야합니까?ListView getCount() 메서드를 한 번 반복 수행하여
@Override
public boolean onQueryTextChange(String newText) {
sizeOfList = listView.getAdapter().getCount(); //changes based on the number of items in the listview....so changes when filtered
Toast.makeText(getActivity(), String.valueOf(sizeOfList), Toast.LENGTH_SHORT).show();
if (TextUtils.isEmpty(newText)){
listView.clearTextFilter();
for (int i = 0; i < actualposList.size(); i++){
listView.setItemChecked(actualposList.get(i), true);
Log.d("qqqq", String.valueOf(actualposList.get(i)));
}
} else {
listView.setFilterText(newText);
if (!actualposList.isEmpty()){
for (int i = 0; i < list.size(); i++){
//listView.setItemChecked(i, false);
}
}
}
return true;
}
당신이 actualposList.size를 (사용하지 못할 TRY) 대신 getCount의? – ABDevelopers
아쉽게도 actualposList는 내가 만든 대화 상자에서 선택된 항목의 위치를 유지합니다. onQueryTextChange가 호출 될 때 listview에 나타나는 항목의 수가 필요합니다. – topgun741
시도해 볼 수 있습니다 : Method1 - 필터를 사용하는 대신 어댑터 내부에서 공용 메서드를 사용하십시오. Method2 - 어댑터와 필터의 publishResults()에 인터페이스를 만들고, activity/fragment를 업데이트하십시오. [http://programandroidlistview.blogspot.com/]에서 배열 어댑터에서 샘플을 볼 수 있습니다. 희망 그 도움! –