如何解决listview项中TextView的颜色自动更改android
因此,我尝试使用 ListView 将 TextView 中的文本颜色设置为单击时的绿色。
我还使用 Filterable 和 EditText 的 addTextChangedListener
来搜索我的 ArrayList 中的项目。
问题是当我点击一个项目时,textview 变为绿色(按预期),但是当我尝试搜索其他内容时,我看到 ListView 中第一个项目内的 TextView 的颜色变为绿色,而我点击的那个自动变回白色。
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 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) {
}
});
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();
}
});
如何防止我选择的 TextView 的颜色在我的 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 && 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();
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。