O_Casper_ne 2013-04-22 08:43 采纳率: 7.7%
浏览 2179
已采纳

当设置 setText 时 Custom listview 出错

我创建了一个Custom listview,有一个image, text 和 checkbox ,当我想设置一个值时,却获得一个NUll Pointer Exception异常。如果我不设置一个值如何获得默认的list?

class PInfo {
    String appname = "";
    String pname = "";
    String versionName = "";
    int versionCode = 0;
    int icon;
 }
 public class InstalledApps extends Activity{
    private static LayoutInflater inflater=null;
private ListView listview;
private Activity activity;
List<PInfo> installedApps = new ArrayList<PInfo>();
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.applist);
    activity = this;
    listview = (ListView)findViewById(R.id.listView1);
    PackageManager pm = getPackageManager();
    List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
    for(ApplicationInfo app : packages) {
        PInfo newInfo = new PInfo();
            newInfo.appname = (String) app.loadLabel(pm);
            newInfo.pname = app.packageName;
        if((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 1){             
            installedApps.add(newInfo);
        } else if ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 1) {
            installedApps.add(newInfo);
        } else {
            installedApps.add(newInfo); 
        }
    }
    InstalledAppsAdapter iap = new InstalledAppsAdapter(this, installedApps);
listview.setAdapter(iap);
}
}
class InstalledAppsAdapter extends BaseAdapter{
private Activity activity;
private static LayoutInflater inflater=null;
List<PInfo> installedApps = new ArrayList<PInfo>();
ListView listview; 

public InstalledAppsAdapter(Activity a, List<PInfo> b) {
   // TODO Auto-generated constructor stub
    installedApps = b;
    activity = a;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    listview = (ListView)activity.findViewById(R.id.listView1);
}
@Override
public int getCount() {
    // TODO Auto-generated method stub
    return installedApps.size();
}
@Override
public Object getItem(int arg0) {
    // TODO Auto-generated method stub
    return arg0;
}
@Override
public long getItemId(int arg0) {
    // TODO Auto-generated method stub
    return arg0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
    // TODO Auto-generated method stub
    View customView = arg1;
    ViewHolder holder;
    if(arg1 == null){
        customView = inflater.inflate(R.layout.listrow, null);
    holder = new ViewHolder();
    holder.iv = (ImageView)customView.findViewById(R.id.imageView1);
    holder.tv = (TextView) customView.findViewById(R.id.textView2);
    holder.cb = (CheckBox)customView.findViewById(R.id.checkBox1);
    }else{
        holder = (ViewHolder)customView.getTag();
    }
    PInfo pinfo = installedApps.get(arg0);
    holder.tv.setText(""+pinfo.appname);
    return customView;
}
static class ViewHolder{
    ImageView iv;
    CheckBox cb;
    TextView tv;
}

看起来像findViewById(R.id.textView1)返回null。什么问题呢?

  • 写回答

2条回答

  • balmy 2013-04-22 13:37
    关注

    好像是一般下面这么写吧,你的有点怪,而且你也少了convertView.setTag(holder);这个动作

     public View getView(int position, View convertView, ViewGroup parent) {
                System.out.println("getView " + position + " " + convertView);
                ViewHolder holder = null;
                if (convertView == null) {
                    convertView = mInflater.inflate(R.layout.item1, null);
                    holder = new ViewHolder();
                    holder.textView = (TextView)convertView.findViewById(R.id.text);
                    convertView.setTag(holder);
                } else {
                    holder = (ViewHolder)convertView.getTag();
                }
                holder.textView.setText(mData.get(position));
                return convertView;
            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型