[英]Color of TextView in listview item changes automatically android
So I am trying to use ListView to set the color of the text in my TextView to green when its clicked.因此,我尝试使用 ListView 在单击时将 TextView 中的文本颜色设置为绿色。 I also use Filterable with EditText's addTextChangedListener
to search for items in my ArrayList.我还使用 Filterable 和 EditText 的addTextChangedListener
来搜索我的 ArrayList 中的项目。
The problem is when I click on a item the textview changes to green (as intended) but when i try to search something else I see the color of the TextView inside the first item in my ListView goes green and the one i clicked changes back to white automatically.问题是当我单击一个项目时,textview 变为绿色(如预期的那样),但是当我尝试搜索其他内容时,我看到我的 ListView 中第一个项目内的 TextView 的颜色变为绿色,我单击的那个变回自动变白。
EditText onTextChnagedListener: EditText onTextChangedListener:
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) {
}
});
The onItemClickListener of ListView: ListView的onItemClickListener:
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();
}
});
Example image of when I click item in ListView:当我单击 ListView 中的项目时的示例图像:
After I search something else without clicking on any item:在我搜索其他内容而不单击任何项目后:
How do I prevent the color of the TextView I selected from automatically changing in my ListView?如何防止我选择的 TextView 的颜色在我的 ListView 中自动更改?
Thanks for the help!谢谢您的帮助!
Try this one.试试这个。
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 && 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;
}
adapter.notifyDataSetChanged();
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.