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

问题描述

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);
}
}

解决方案

检查下你这些是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);

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

时间: 2024-06-04 12:24:55

listview 局部刷新 adapter中获取控件报空指针的相关文章

Android OnCreate()中获取控件高度与宽度两种方法详解_Android

Android OnCreate()中获取控件高度与宽度 试过在OnCreate()中获取控件高度与宽度的童鞋都知道,getWidth()与getHeight()方法返回是0,具体原因 看一下Activity的生命周期 就会明白. 上代码: 方法一: int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0,View.Me

Android OnCreate()中获取控件高度与宽度两种方法详解

Android OnCreate()中获取控件高度与宽度 试过在OnCreate()中获取控件高度与宽度的童鞋都知道,getWidth()与getHeight()方法返回是0,具体原因 看一下Activity的生命周期 就会明白. 上代码: 方法一: int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0,View.Me

asp.net的js中获取控件的ClientID

                        <tr>                         <td width="110" height="35" align="center" style="font-weight: bolder">                             出生年月                         </td>          

Android在OnCreate中获取控件的宽度和高度的实现代码

在Android中,有时需要对控件进行测量,得到的控件宽度和高度可以用来做一些计算.在需要自适应屏幕的情况下,这种计算就显得特别重要.另一方便,由于需求的原因,希望一进入界面后,就能得到控件的宽度和高度. 可惜的是,根据我的验证,利用网上转载的那些方法在OnCreate函数中获取到的仍然是0(希望搞技术的能自己验证过再转载),例如Measure方法之后调用getMeasuredWidth的值还是0. 原因是因为当OnCreate函数发生时,只是提供了数据初始化的机会,此时还没有正式绘制图形.而绘

Asp.net 2.0 中获取控件输出的Html代码

asp.net|控件 X将Asp.net 控件的呈现html获取,在不少场合会用到,比如生成静态页时 以下代码选自 Asp.net 2.0 高级编程   public static string RenderControlAsString(Control ctl)...{   StringWrite sw=new StringWrite();   HtmlTextWrite write=new HtmlTextWrite(sw);   ctl.RenderControl(writer);   s

遇到一个奇怪的问题,在GridView的OnRowCommand事件代码无法刷新页面中的控件内容

问题描述 页面中定义了一个GridView,其中设置了一个"修改"列,点击"修改"后可以触发OnRowCommand事件,但在该事件中,代码无法刷新页面中的TextBox的内容,跟踪看了,TextBox.Text的确赋值了,但页面显示无反应,如果在页面上增加个按钮来给TextBox赋值,则能够显示出来,不知道什么原因,有谁遇到过吗? 解决方案 解决方案二:后台代码如下:------------------------------IP地址:<asp:TextBo

html-ASP中HTML控件,UI层获取文本值问题

问题描述 ASP中HTML控件,UI层获取文本值问题 asp:code 姓名 年龄 住址 备注 Cs:code public partial class AddUserInfo : System.Web.UI.Page { UserInfoManager userinfoManager = new UserInfoManager(); protected string userName; protected int age; protected string address; protected

Android中findViewById获取控件返回为空问题怎么解决_Android

在Android程序中,有时候需要加载非原来activity中xml布局中的控件,来使Android程序的界面更加丰富. 我本身是在使用ViewFlipper中遇到的问题. public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); inflater=(LayoutInflater)getSystemService(LAYO

Android中findViewById获取控件返回为空问题怎么解决

在Android程序中,有时候需要加载非原来activity中xml布局中的控件,来使Android程序的界面更加丰富. 我本身是在使用ViewFlipper中遇到的问题. public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); inflater=(LayoutInflater)getSystemService(LAYO