ListView的Item选中改变TextView字体颜色

字体颜色只是在按下那一瞬间改变,松手后立刻恢复

17141230_hJcQ.jpg

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选中后才恢复

17141230_VQPy.jpg

处理思想:在适配器里写好字体变化的相关逻辑,然后在外部事件监听中改变某个值,通知字体改变。

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);
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值