nuannuanpeng 2016-01-04 06:17 采纳率: 0%
浏览 1728

listview 局部刷新 adapter中获取控件报空指针

adapter中写如下方法:
public void updateView(int itemIndex,View view) {
if(view == null) {
return;
}
//从view中取得holder
ViewHolder holder = (ViewHolder) view.getTag();
holder.tv_content=(TextView)view.findViewById(R.id.othertitle_content);
holder.img= (ImageView) view.findViewById(R.id.othertitle_img);
holder.tv_browse=(TextView)view.findViewById(R.id.num_browse);
holder.tv_comment=(TextView)view.findViewById(R.id.num_comment);
holder.tv_collect=(TextView)view.findViewById(R.id.num_collect);
holder.ly_browse= (LinearLayout) view.findViewById(R.id.btn_browse);
holder.ly_comment= (LinearLayout) view.findViewById(R.id.btn_comment);
holder.ly_collect= (LinearLayout) view.findViewById(R.id.btn_collect);

        List<Map<String,String>> arrs = gson.fromJson(list.get(itemIndex).get("发现图片"), new TypeToken<List<Map<String,String>>>() {
        }.getType());
        holder.tv_content.setText(MapUtils.getString(list.get(itemIndex), "发现标题", ""));
        if(arrs.size()>0){
            ImageLoader.getInstance().displayImage(arrs.get(0).get("缩略图"), holder.img, options);
        }else{
            if(type==1) {
                holder.img.setImageDrawable(act.getResources().getDrawable(R.drawable.bg_gray));
            }else{
                holder.img.setImageDrawable(context.getResources().getDrawable(R.drawable.bg_gray));
            }
        }

        holder.tv_browse.setText(MapUtils.getString(list.get(itemIndex), "阅读次数", "0"));
        holder.tv_comment.setText(MapUtils.getString(list.get(itemIndex), "评论次数", "0"));
        holder.tv_collect.setText(MapUtils.getString(list.get(itemIndex), "收藏次数", "0"));
    }

activity中写如下方法:
private void updateView(int itemIndex) {
//得到第一个可显示控件的位置,
ListView list_view=listView.getRefreshableView();
int visiblePosition = list_view.getFirstVisiblePosition();
//只有当要更新的view在可见的位置时才更新,不可见时,跳过不更新
if (itemIndex - visiblePosition >= 0) {
//得到要更新的item的view
View view = list_view.getChildAt(itemIndex - visiblePosition);
//调用adapter更新界面
adapter.updateView(itemIndex,view);
}
}

  • 写回答

1条回答 默认 最新

  • ProXin 2016-01-04 06:49
    关注

    检查下你这些是Button还是LinearLayout:

    holder.ly_browse= (LinearLayout) view.findViewById(R.id.btn_browse);
    holder.ly_comment= (LinearLayout) view.findViewById(R.id.btn_comment);
    holder.ly_collect= (LinearLayout) view.findViewById(R.id.btn_collect);

    都要对应起来,这些不对也是报空的,应该有提示哪一行为空。。

    评论

报告相同问题?

悬赏问题

  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入