今回ArrayAdapterにFilterを独自実装を行ったのですが、performFilteringの処理で戻り値を返してから、
publishResultsへ返ってきた際の時間が7、8秒かかってしまいます。
原因がわかる方、performFilteringの後に何をしているかわかる方ご教授ください。
java
1private Filter mFilter = new Filter() { 2 3 @Override 4 protected Filter.FilterResults performFiltering(CharSequence constraint) { 5 final Filter.FilterResults oReturn = new Filter.FilterResults(); 6 final ArrayList<RowInfo> results = new ArrayList<>(); 7 if (mTmpRowInfos == null) { 8 mTmpRowInfos = mRowInfos; 9 } 10 if (!TextUtils.isEmpty(constraint)) { 11 if (mTmpRowInfos != null && mTmpRowInfos.size() > 0) { 12 for (RowInfo rowInfo : mTmpRowInfos) { 13 if(!(rowInfo.item instanceof FriendItem))continue; 14 FriendItem friendItem = (FriendItem)rowInfo.item; 15 if(!(friendItem.getFriendData() instanceof FriendData))continue; 16 if (((FriendData)friendItem.getFriendData()).getFriend().username.toLowerCase() 17 .contains(constraint.toString())) { 18 results.add(rowInfo); 19 } 20 } 21 } 22 oReturn.values = results; 23 }else { 24 oReturn.values = mTmpRowInfos; 25 } 26 oReturn.count = results.size(); 27 return oReturn; 28 } 29 30 @SuppressWarnings("unchecked") 31 @Override 32 protected void publishResults(CharSequence constraint, 33 Filter.FilterResults results) { 34 mRowInfos = (ArrayList<RowInfo>) results.values; 35 notifyDataSetChanged(); 36 } 37 };
あなたの回答
tips
プレビュー