如何在滚动视图中进行搜索并能够获取下一个 indexOf?
How to make a search in scrollview and be able to get next indexOf?
我有一个 editText 和一个搜索按钮,现在它只显示第一个结果。
但我希望能够再次按下搜索按钮,然后显示下一个 indexOf。我该怎么做?
public void searchMethod(final String search) {
int i = mTextCurrentArticle.toLowerCase().indexOf(search.toLowerCase().trim());
if (i == -1) {
mEditTextSearch.setTextColor(Color.RED);
// String cap = search.substring(0, 1).toUpperCase() + search.substring(1);
//i = mTextCurrentArticle.indexOf(cap);
} else {
mEditTextSearch.setTextColor(Color.BLACK);
}
// int line = mTextViewCurrentArticle.getLayout().getLineForOffset(i);
Layout layout = mTextViewCurrentArticle.getLayout();
mScrollView.scrollTo(0, layout.getLineTop(layout.getLineForOffset(i)));
您可以使用 indexOf
的重载版本,它采用搜索的起始索引并像这样传递原始索引:
int i = mTextCurrentArticle.toLowerCase().indexOf(search.toLowerCase().trim());
int nextPosition = mTextCurrentArticle.toLowerCase().indexOf(search.toLowerCase().trim(), i+1);
编辑:
如果您需要循环遍历后续位置,则只需将索引 i
设为全局变量并将其初始化为 -1
然后在你的 searchMethod
中使用
i = mTextCurrentArticle.toLowerCase().indexOf(search.toLowerCase().trim(), i+1);
这将确保它在第一次调用时returns第一个位置,然后在随后调用时给出下一个位置
我有一个 editText 和一个搜索按钮,现在它只显示第一个结果。
但我希望能够再次按下搜索按钮,然后显示下一个 indexOf。我该怎么做?
public void searchMethod(final String search) {
int i = mTextCurrentArticle.toLowerCase().indexOf(search.toLowerCase().trim());
if (i == -1) {
mEditTextSearch.setTextColor(Color.RED);
// String cap = search.substring(0, 1).toUpperCase() + search.substring(1);
//i = mTextCurrentArticle.indexOf(cap);
} else {
mEditTextSearch.setTextColor(Color.BLACK);
}
// int line = mTextViewCurrentArticle.getLayout().getLineForOffset(i);
Layout layout = mTextViewCurrentArticle.getLayout();
mScrollView.scrollTo(0, layout.getLineTop(layout.getLineForOffset(i)));
您可以使用 indexOf
的重载版本,它采用搜索的起始索引并像这样传递原始索引:
int i = mTextCurrentArticle.toLowerCase().indexOf(search.toLowerCase().trim());
int nextPosition = mTextCurrentArticle.toLowerCase().indexOf(search.toLowerCase().trim(), i+1);
编辑:
如果您需要循环遍历后续位置,则只需将索引 i
设为全局变量并将其初始化为 -1
然后在你的 searchMethod
中使用
i = mTextCurrentArticle.toLowerCase().indexOf(search.toLowerCase().trim(), i+1);
这将确保它在第一次调用时returns第一个位置,然后在随后调用时给出下一个位置