PullToRefreshListView 局部刷新问题

本文介绍如何在PullToRefreshListView中实现局部刷新功能,包括添加headview的方法及通过自定义适配器更新指定位置视图的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PullToRefreshListView 局部刷新问题

我的需求是需要添加一个headview的:此处listview就是PullToRefreshListView实例对象

listview.getRefreshableView().addHeaderView(headView);

局部刷新:
最关键的获取对应position的view

int visiblePosition = listview.getRefreshableView().getFirstVisiblePosition();
View view = listview.getRefreshableView().getChildAt(itemIndex - visiblePosition + 2);//如果需求没有Headview 此处的+2只要改成+1就行了,因为PullToRefreshListView本身的刷新布局是一个headview,所以至少要+1。参数itemIndex:你想改变布局的position,直接传position就行了

上面的view就是position对应的view,具体这两句代码怎么用呢?直接自定义一个方法,写在自定义适配器里面就行了,下面是我写的一个方法

public void updateViewForClick(int itemIndex, boolean ifPlay)
        {
            if (listview == null || itemIndex < 0
                    || itemIndex >= dayList.size()) { return; }
            // 如添加headerview后 firstview就是hearderview
            // 所有索引+1 取第一个view
            // 获取点击的view

            int visiblePosition = listview.getRefreshableView()
                    .getFirstVisiblePosition();

            View view = listview.getRefreshableView().getChildAt(
                    itemIndex - visiblePosition + 2);//这里+2是因为PullToRefreshListView  刷新布局 算一个Headview,而我本身需求又添加了一个headview, 如果仅仅只是PullToRefreshListView的刷新布局  这里+1就行了

            if (view != null)//对View进行操作,这里换成你自己的需求
            {
                ImageView btnplay = (ImageView) view.findViewById(R.id.btnplay);

                TextView txttitle = (TextView) view.findViewById(R.id.txttitle);
                ImageView imgstate = (ImageView) view
                        .findViewById(R.id.imgstate);
                // if (txttitle != null)
                // {
                // txttitle.setTextColor(Color.parseColor("#999999"));
                // }
                // if (imgstate != null)
                // {
                // imgstate.setImageResource(R.drawable.icon_audio_everyday_played);
                // }
                if (btnplay != null)
                {
                    if (ifPlay)
                    {
                        btnplay.setImageResource(R.drawable.icon_audio_everyday_topause);
                    }
                    else
                    {
                        btnplay.setImageResource(R.drawable.icon_audio_everyday_toplay);
                    }
                }
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值