使用ListView时出现空指针问题

guolei005 2016-05-19 05:59:07
通过Intent传递过来的数据放在data1数组中,包括name,price,number
private ListData1[] data1 = new ListData1[5];

BaseAdapter adapter1 =new BaseAdapter() {

@Override
public int getCount() {
return data1.length;
}

@Override
public ListData1 getItem(int position) {
return data1[position];
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
LinearLayout ll =null;
if (convertView!=null){
ll=(LinearLayout)convertView;
}else {
ll= (LinearLayout) LayoutInflater.from(THEATY1.this).inflate(R.layout.listcell1,null);
}//绑定列表项布局

ListData1 data =getItem(position); //绑定数据
TextView name1 =(TextView)ll.findViewById(R.id.name1);
TextView price1 =(TextView)ll.findViewById(R.id.price1);
name1.setText(data.name); //提示是空指针
price1.setText(data.price);
return ll;
}
public void add( Bundle data){

ListData1 l=new ListData1(data.getString("name"),data.getString("price"),1);
data1[j]=l;
}
};
public void add(ListData1 item){
data1[j]=item;
j++;
}
...全文
322 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱吃红烧鱼 2016-05-20
  • 打赏
  • 举报
回复
引用 5 楼 guolei005的回复:
[quote=引用 3 楼 sinat_34979884 的回复:] 肯定空指针呀,data空指针,你里面本来什么值都没有。你想让他有值要么new的时候构造出来,要么先确保先给他赋值
我把接收到的Intent数据赋值给了data1数组,用system.out输出data[0]里面有数据,data[0]应该有数据才对啊。[/quote] 会不会是你适配器已经先加载了,而赋值操作在之后才执行
qq_29637837 2016-05-20
  • 打赏
  • 举报
回复
构造方法呢?
guolei005 2016-05-20
  • 打赏
  • 举报
回复
引用 3 楼 sinat_34979884 的回复:
肯定空指针呀,data空指针,你里面本来什么值都没有。你想让他有值要么new的时候构造出来,要么先确保先给他赋值
我把接收到的Intent数据赋值给了data1数组,用system.out输出data[0]里面有数据,data[0]应该有数据才对啊。
哎,真难 2016-05-20
  • 打赏
  • 举报
回复
TextView name1 =(TextView)ll.findViewById(R.id.name1);这里估计没有绑定到
  • 打赏
  • 举报
回复
ListData1 data =getItem(position); //绑定数据 这行代码也错了,找个案例看看把
  • 打赏
  • 举报
回复
你自己最后写的两个方法压根就没调用到,适配器的数据源是从构造器传进来癨啊
爱吃红烧鱼 2016-05-20
  • 打赏
  • 举报
回复
肯定空指针呀,data空指针,你里面本来什么值都没有。你想让他有值要么new的时候构造出来,要么先确保先给他赋值
guolei005 2016-05-19
  • 打赏
  • 举报
回复
private ListData1[] data1 = new ListData1[5]; 这样定义数组就报空指针 private static ListData1[] data1 = new ListData1[]{ new ListData1("00克", "15",1), new ListData1("100克", "5", 1), }; 但如果先给数组赋一些值就可以正常运行,也能添加接受到的数据。第一种方法存在什么问题?
节操在此 2016-05-19
  • 打赏
  • 举报
回复
打个断点不就知道了么,看看是data为空,还是name为空

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧