如何使用java在GridView中搜索


我希望你没事。

我有一个小代码和在列表中搜索的好方法,当我在listView 中使用它时,代码工作得很好

但在GidView中不起作用,我得到错误

注意调用上的"int java.util.ArrayList.size(("虚拟方法空对象引用

这是我在列表视图中搜索时使用的相同代码,只是在GridView中我得到了这个错误,我希望你能为我提供帮助。

这是我的代码:

在我的onCreate中,我有保存的字符串ToSearch获取列表Map数据

String SavedToSearch = new Gson().toJson(listMap);

searchEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
ArrayList<HashMap<String, Object>> searchMap = new ArrayList<>();
try {
double length;
double r;
String value1;
listMap = new Gson().fromJson(SavedToSearch, new TypeToken<ArrayList<HashMap<String, Object>>>() {
}.getType());
length = listMap.size();
r = listMap.size() - 1;
for (int _repeat17 = 0; _repeat17 < (int) (length); _repeat17++) {
value1 = listMap.get((int) r).get("name").toString();
if (value1.toLowerCase().contains(s.toString().toLowerCase())) {
} else {
listMap.remove((int) (r));
}
r--;
}
gridview1.setAdapter(new Gridview1Adapter(listMap));

} catch (Exception r10) {
r10.printStackTrace();
}
}
});

我检查了字符串SavedToSearch,它不是空的:

[{"name":"facebook.png","link":"https://firebasestorage.googleapis.com/v0/b/blocksmanager-3c1ae.appspot.com/o/iconsStore%2Ffacebook.png?altu003dmediau0026tokenu003d19837141-7476-4ae4-9d1a-066ed8aa512a"},
{"name":"eraser.png","link":"https://firebasestorage.googleapis.com/v0/b/blocksmanager-3c1ae.appspot.com/o/iconsStore%2Fbutton-23968_960_720.png?altu003dmediau0026tokenu003d99e00ecd-c7b5-4dc0-9969-ea0aa9e400df"},
{"link":"https://firebasestorage.googleapis.com/v0/b/blocksmanager-3c1ae.appspot.com/o/iconsStore%2F580b57fcd9996e24bc43c514.png?altu003dmediau0026tokenu003d21fb21e4-2d10-4e98-b226-7387b0639cb1"},
{"link":"https://firebasestorage.googleapis.com/v0/b/blocksmanager-3c1ae.appspot.com/o/iconsStore%2Feraser.png?altu003dmediau0026tokenu003de7f5c133-7161-45e7-a063-467e6d31a3a1"},
{"name":"instagram (1).png","link":"https://firebasestorage.googleapis.com/v0/b/blocksmanager-3c1ae.appspot.com/o/iconsStore%2Ffiles.png?altu003dmediau0026tokenu003d6e814321-df5d-44e5-a7bf-415d2b6271d6"}]

这个问题很容易,经过一次又一次的尝试,我发现在我的ArrayList中有两个项目缺少密钥名称,我不知道怎么回事,但这是我的问题,bcz我得到了上面的错误这是我的问题的解决方案,也许它可以帮助

这段代码非常有用,简短而完美,可以直接将结果显示给ListView或gridview。在你的应用程序中使用它,并感谢

最新更新