sld22525482
「已注销」
采纳率12.6%
2016-08-16 07:27 阅读 1.4k
已采纳

listview 点击item改变所点击item中的textview的颜色

在listview监听中设置后
item_text = (TextView) parent.getChildAt(position).findViewById(R.id.listtext);
item_text.setTextColor(Color.YELLOW);

发现点击后textview变色的文字会随着列表滑动 任意分配位置 求解决

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    FFZ2009 FFZ2009 2016-08-16 08:28

    在类中声明一个成员
    private List clickedItems = new ArrayList<>();

        在listview的listener中,当item被点击了,把item所 在的position加入到clickedItem中
        clickedItems.add(position);
    
    
        //在getView中
    
        getView(....){
    

    //...
    item_text = (TextView) parent.getChildAt(position).findViewById(R.id.listtext);
    if(clickedItems.contains(position)){
    item_text.setTextColor(Color.YELLOW);
    }else{
    item_text.setTextColor(Color.BLACK);
    }
    }

    //...}

    以上是大概的思路。

    点赞 评论 复制链接分享
  • qq_24535769 忘情丶 2016-08-16 07:32

    这是因为你的view重用了问题;

    点赞 评论 复制链接分享
  • FFZ2009 FFZ2009 2016-08-16 07:37

    ListView中view是循环利用的。
    在ListView对应的getView()中,需要将item_text的颜色改为正常(未点击时)的颜色。

    如下所示:
    getView(....){
    //...
    item_text = (TextView) parent.getChildAt(position).findViewById(R.id.listtext);
    item_text.setTextColor(//此处为未点击时的颜色);
    //...}

    点赞 评论 复制链接分享
  • qq_24535769 忘情丶 2016-08-17 02:51

    点击的时候还是你之前的demo没关系,只不过需要记录lastpositin=Position;
    记录点击的的Position位置
    if(Position==lastpositin){

    }else{


    这是一个变化的情况

    点赞 评论 复制链接分享

相关推荐