原因出在adapter的getView方法中
原先的写法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
ViewHolder holder = null;
if(convertView == null) {
holder = new ViewHolder();
LayoutInflater inflater = getLayoutInflater();
view = inflater.inflate(R.layout.list_cell, null);
holder.tvTitle = (TextView) view.findViewById(R.id.tv_title);
holder.tvDetail = (TextView) view.findViewById(R.id.tv_content);
holder.tvComment = (TextView) view.findViewById(R.id.tv_comment);
} else {
view = convertView;
}
holder.tvTitle.setText(newsList.get(position).getTitle());
holder.tvDetail.setText(newsList.get(position).getDetail());
holder.tvComment.setText(newsList.get(position).getComment() + "跟帖");
return view;
}
改正后写法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null) {
holder = new ViewHolder();
LayoutInflater inflater = getLayoutInflater();
convertView = inflater.inflate(R.layout.list_cell, null);
holder.tvTitle = (TextView) convertView.findViewById(R.id.tv_title);
holder.tvDetail = (TextView) convertView.findViewById(R.id.tv_content);
holder.tvComment = (TextView) convertView.findViewById(R.id.tv_comment);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tvTitle.setText(newsList.get(position).getTitle());
holder.tvDetail.setText(newsList.get(position).getDetail());
holder.tvComment.setText(newsList.get(position).getComment() + "跟帖");
return convertView;
}
出现空指针的原因应该是ListView滑动后,原先的写法holder内的变量(tvTitle)不能找到了。