您的位置:首页 > 其它

listview的局部刷新

2016-05-24 16:05 281 查看
listview的局部刷新,就是刷新其中某一条数据,如果只有一条数据变化的时候还执行notifyDataSetChanged方法,肯定会造成很大的性能开销

简单粗暴的说方法

private void updateView(int position) {
//得到第一个可显示控件的位置,
int visiblePosition = lv_product_list.getFirstVisiblePosition();
//只有当要更新的view在可见的位置时才更新,不可见时,跳过不更新
if (position - visiblePosition >= 0) {
//得到要更新的item的view
View view = lv_product_list.getChildAt(position - visiblePosition);
//调用adapter更新界面
productAdapter.updateView(view, position,strPlot);
}
}


然后要在适配器实现这个方法来供其调用

/**
* 局部刷新
*
* @param view
* @param itemIndex
*/
public void updateView(View view, int itemIndex, String strPlot) {
if (view == null) {
return;
}
//从view中取得holder
ViewHolder holder = (ViewHolder) view.getTag();
//        holder.tv_product_name = (TextView) view.findViewById(R.id.tv_product_name);
//                 holder.name = (TextView) view.findViewById(R.id.name);
holder.tv_pick_default_plot = (TextView) view.findViewById(R.id.tv_pick_default_plot);
setData(holder, itemIndex, strPlot);
}

/**
* 设置viewHolder的数据
*
* @param holder
* @param position
*/
private void setData(ViewHolder holder, int position, String strPlot) {
//        holder.tv_product_name.setText(productInfos.get(position).getProduct_name());
//        holder.tv_product_permoney.setText("¥" + productInfos.get(position).getProduct_price());
//        holder.tv_product_number.setText("x" + productInfos.get(position).getProduct_num());
//"选择地块"是在Activity页面动态添加
if (buffer_plotname.size() > 0 && !buffer_plotname.get(position).equals("选择")) {
holder.tv_pick_default_plot.setText(strPlot);
} else if (buffer_plotname.get(position).equals("")) {
holder.tv_pick_default_plot.setText("选择");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  listview 局部刷新