您的位置:首页 > 其它

PullToRefreshListView 局部刷新问题

2017-06-26 14:26 429 查看

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);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息