Итак, я пытаюсь использовать ListView, чтобы установить цвет текста в моем TextView на зеленый при нажатии. Я также использую Filterable с addTextChangedListener
EditText для поиска элементов в моем ArrayList.
Проблема в том, что когда я нажимаю на элемент, текстовое представление меняется на зеленый (как и предполагалось), но когда я пытаюсь найти что-то еще, я вижу, что цвет TextView внутри первого элемента в моем ListView становится зеленым, а тот, который я щелкнул, снова меняется на белый автоматически.
EditText onTextChnagedListener:
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) {
if(TextUtils.isEmpty(s.toString()))
{
listView.clearTextFilter();
}
else
{
listView.setFilterText(s.toString());
adapter.getFilter().filter(s.toString());
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
Слушатель onItemClickListener для ListView:
View selectedView = null;
int selectedPositon = -1;
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
view.setSelected(true);
if(selectedPosition != -1)
{
if(selectedView != null)
{
TextView textView = selectedView.findViewById(R.id.search_frag_listview_item_songname);
textView.setTextColor(Color.parseColor("#FFFFFF"));
selectedPosition = (int) id;
TextView selectedView = view.findViewById(R.id.search_frag_listview_item_songname);
selectedView.setTextColor(Color.parseColor("#00FF00"));
selectedView.setSelected(false);
}
selectedPosition = (int) id;
selectedView = view;
}
else
{
view.setSelected(true);
TextView textView = view.findViewById(R.id.search_frag_listview_item_songname);
textView.setTextColor(Color.parseColor("#00FF00"));
selectedView = view;
selectedPosition = (int) id;
}
adapter.notifyDataSetChanged();
}
});
Пример изображения, когда я щелкаю элемент в ListView:
После того, как я ищу что-то еще, не нажимая ни на один элемент:
Как предотвратить автоматическое изменение цвета TextView, который я выбрал, в моем ListView?
Спасибо за помощь!