我使用的自定义适配器格式与我在其他应用程序中使用的格式相同。我只更改了字符串引用,但在运行应用程序时出现以下错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
我一直在努力思考这个问题,但我无法弄清楚问题出在哪里。一切都与其他应用程序完全相同,但由于某种原因在这个应用程序中不起作用。一切都完全一样。唯一的区别是从中提取数据的数据库表。这是我的 getView 产生的错误:
public class Holder
{
TextView title;
TextView description;
NetworkImageView img;
RatingBar rating;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Holder holder=new Holder();
View rowView;
rowView = inflater.inflate(R.layout.product_row, null);
holder.title=(TextView) rowView.findViewById(R.id.productName);
holder.img=(NetworkImageView) rowView.findViewById(R.id.productPic);
holder.rating=(RatingBar)rowView.findViewById(R.id.ratingBar2);
holder.title.setText(result.get(position).getName());
holder.rating.setRating(Float.valueOf(result.get(position).getRating().toString()));
// If you are using NetworkImageView
holder.img.setImageUrl(result.get(position).getImageURL(), VolleyController.getInstance().getImageLoader());
return rowView;
}
我的行数据/模型也完全一样。给出错误的行是:
holder.title.setText(result.get(position).getName());
在我的 RowData 模型中,getName 是这样的:
public String getName(){
return name;
最佳答案
用这些代码行替换你的代码。在你的代码中,你没有使用 BaseAdapter
的 getView()
方法的 View convertView
而不是它,你使用了自己的 View
即 rowView ,因此你面临这些问题。所以使用 adapter
类的 getView()
方法的 View
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Holder holder=new Holder();
if (convertView == null) {
convertView = inflater.inflate(R.layout.product_row, null);
holder.title=(TextView) convertView.findViewById(R.id.productName);
holder.img=(NetworkImageView) convertView.findViewById(R.id.productPic);
holder.rating=(RatingBar)convertView.findViewById(R.id.ratingBar2);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.title.setText(result.get(position).getName());
holder.rating.setRating(Float.valueOf(result.get(position).getRating().toString()));
// If you are using NetworkImageView
holder.img.setImageUrl(result.get(position).getImageURL(), VolleyController.getInstance().getImageLoader());
return convertView;
}
关于java - Android 中的 TextView 的字符串不像以前在自定义适配器中那样显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35720222/