gpt4 book ai didi

java - 使用 SearchView 作为 ListView Java 的位置问题

转载 作者:行者123 更新时间:2023-12-02 13:15:23 25 4
gpt4 key购买 nike

我有一个 ListView ,其中填充了这些单词

    arrayList.add("apple");
arrayList.add("banana");
arrayList.add("bell");
arrayList.add("cheese");

如果我单击一行,则会出现一条消息

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

Toast.makeText(getApplicationContext(), arrayList.get(position), Toast.LENGTH_SHORT).show();
}
});

我有一个搜索 View ,可以过滤掉用户输入之外的单词

editText.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) {
String text = editText.getText().toString().toLowerCase(Locale.getDefault());
adapter.getFilter().filter(text);

}

@Override
public void afterTextChanged(Editable s) {

}
});

如果我在搜索 View 中输入“b”,则 ListView 中只有“banana”和“bell”。但如果我点击“香蕉”, toast 就会说“苹果”。我明白问题是什么以及为什么这样做,但我不知道解决它的简单方法。

解决这个问题的一种方法就像这样......

int textLength = text.length();

if (textLength == 0) {
test.addAll(arrayList);
} else {

int counter = 0;

for (String string : arrayList) {

if (string.toLowerCase().substring(0, textLength).equals(text)) {
test.add(string);
intPositions.add(counter);
}

counter++;
}
}

如果我这样做,我的 ListView 的 onClickListener 会更改为这样

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

int i = intPositions.get(position);

Toast.makeText(getApplicationContext(), arrayList.get(i), Toast.LENGTH_SHORT).show();
}
});

注意:仅当用户在单击行之前在搜索 View 中键入内容时,此功能才有效。

这很好,但如果我的 arrayList 有 2000、3000 或 5000 个项目,这不是一个非常有效的方法。如有任何帮助,我们将不胜感激。

最佳答案

更改以下代码:

Toast.makeText(getApplicationContext(), arrayList.get(position), Toast.LENGTH_SHORT).show();

使用以下代码:

String text = ((TextView) view).getText().toString();
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();

关于java - 使用 SearchView 作为 ListView Java 的位置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43794922/

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