字体颜色只是在按下那一瞬间改变,松手后立刻恢复
1.在res/color文件下创建item_text_selector.xml文件
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/colorAccent" android:state_pressed="true"></item> <item android:color="@color/colorPrimaryDark" android:state_pressed="false"></item> </selector>
2.在TextView中引用即可
android:textColor="@drawable/item_text_selector"
字体颜色按下后就一直为改变的颜色,松手后不会恢复,直到下一个Item选中后才恢复
处理思想:在适配器里写好字体变化的相关逻辑,然后在外部事件监听中改变某个值,通知字体改变。
1.将item_text_selector.xml中的state_pressed改为state_selected
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/colorleft" android:state_selected="true"></item>
<item android:color="@color/colorTextt" android:state_selected="false"></item>
</selector>
2.在TextView中引用
3.然后在自定义的适配器代码中
//当前Item被点击的位置
private int currentItem;
public void setCurrentItem(int currentItem) {
this.currentItem = currentItem;
}
然后在getView()方法中
//设置文本内容
viewHolder.videotwo_list_time.setText("课程时长:"+i1+"分钟");
if (currentItem == i) {
//如果被点击,设置当前TextView被选中
viewHolder.videotwo_list_title.setSelected(true);
viewHolder.videotwo_list_time.setSelected(true);
} else {
//如果没有被点击,设置当前TextView未被选中
viewHolder.videotwo_list_title.setSelected(false);
viewHolder.videotwo_list_time.setSelected(false);
}
4.最后在Activity中编写ListView的Item点击事件
mVideotwoLisview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//改变选中状态
adpater.setCurrentItem(i);
//通知ListView改变状态
adpater.notifyDataSetChanged();
}
});
改变背景颜色 也是类似
if (currentItem == i) {
//如果被点击,设置当前TextView被选中
viewHolder.videotwo_list_title.setSelected(true);
viewHolder.videotwo_list_time.setSelected(true);
viewHolder.videotwo_carryout.setSelected(true);
// viewHolder.videotwo_listview.setBackground(R.drawable.baidihongbian);
viewHolder.videotwo_listview.setBackgroundResource(R.drawable.baidihongbian);
} else {
//如果没有被点击,设置当前TextView未被选中
viewHolder.videotwo_list_title.setSelected(false);
viewHolder.videotwo_list_time.setSelected(false);
viewHolder.videotwo_carryout.setSelected(false);
// viewHolder.videotwo_listview.setBackgroundColor();
viewHolder.videotwo_listview.setBackgroundResource(R.color.gray_f4);
}